Sobes.tech
Junior

Mi a lock kulcsszó célja a C#-ban?

sobes.tech MI

Válasz az MI-től

A lock kulcsszó a szálbiztonság biztosítására szolgál egy kritikus szekció létrehozásával.

Fő céljai:

  • Hozzáférés blokkolása: Biztosítja, hogy csak egy szál hajthassa végre a lock blokkban lévő kódot egy adott időben.
  • Közös erőforrások védelme: Megakadályozza a versenyhelyzeteket, amikor több szál egyidejűleg hozzáfér közös adatokhoz vagy erőforrásokhoz, például osztálymezőkhöz, gyűjteményekhez stb.
  • Szálak szinkronizálása: Használják műveletek végrehajtási sorrendjének szervezésére több szálas forgatókönyvekben.

Használati példa:

private static readonly object _lockObject = new object(); // Zárolási objektum

public void UpdateCounter()
{
    // Kritikus szekció kezdete
    lock (_lockObject)
    {
        // Ennek a blokknek a kódja csak egy szál által futtatható egyszerre
        counter++;
    }
    // Kritikus szekció vége
}

Fontos, hogy egy speciális objektumot (_lockObject a példában) használjunk zárolásra, és ne this-et vagy typeof(TypeName)-t, hogy elkerüljük a potenciális holtpontokat. Ajánlott object típusú objektumokat vagy a System.Threading.ReaderWriterLockSlim-et használni összetettebb forgatókönyvekhez.