Junior
Aký je účel kľúčového slova lock v C#?
sobes.tech AI
Odpoveď od AI
Kľúčové slovo lock sa používa na zabezpečenie bezpečnosti vlákien vytvorením kritickej sekcie.
Jeho hlavné ciele:
- Zámok prístupu: Zabezpečuje, že iba jedno vlákno môže vykonať kód vo vnútri bloku
lockv danom čase. - Ochrana zdieľaných zdrojov: Zabráni podmienkam súťaže pri súčasnom prístupe viacerých vlákien k dátam alebo zdrojom, ako sú polia triedy, kolekcie a pod.
- Synchronizácia vlákien: Používa sa na organizovanie poradia vykonávania operácií v scenároch s viacerými vláknami.
Príklad použitia:
private static readonly object _lockObject = new object(); // Objekt na zámok
public void UpdateCounter()
{
// Začiatok kritickej sekcie
lock (_lockObject)
{
// Kód vnútri tohto bloku môže byť vykonávaný iba jedným vláknom naraz
counter++;
}
// Koniec kritickej sekcie
}
Je dôležité používať špeciálny objekt (_lockObject v príklade) na zamknutie, a nie this alebo typeof(TypeName), aby sa predišlo potenciálnym problémom s mŕtvym zámkom. Odporúča sa používať objekty typu object alebo System.Threading.ReaderWriterLockSlim pre zložitejšie scenáre.