Sobes.tech
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 lock v 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.