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
lockblokkban 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.