Sobes.tech
Junior

Care este scopul cuvântului cheie lock în C#?

sobes.tech AI

Răspuns de la AI

Cuvântul cheie lock este utilizat pentru a asigura siguranța thread-urilor prin crearea unei secțiuni critice.

Obiectivele principale:

  • Blocarea accesului: Asigură că doar un thread poate executa codul din interiorul blocului lock într-un moment dat.
  • Protecția resurselor comune: Previne condițiile de cursă atunci când mai multe thread-uri accesează simultan date sau resurse comune, cum ar fi câmpurile clasei, colecțiile etc.
  • Sincronizarea thread-urilor: Este folosit pentru a organiza ordinea de executare a operațiilor în scenarii multi-thread.

Exemplu de utilizare:

private static readonly object _lockObject = new object(); // Obiect pentru blocare

public void UpdateCounter()
{
    // Începutul secțiunii critice
    lock (_lockObject)
    {
        // Codul din interiorul acestui bloc poate fi executat doar de un singur thread simultan
        counter++;
    }
    // Sfârșitul secțiunii critice
}

Este important să folosiți un obiect specializat (_lockObject în exemplu) pentru blocare, și nu this sau typeof(TypeName), pentru a evita potențiale probleme de blocare mutuală. Se recomandă utilizarea obiectelor de tip object sau System.Threading.ReaderWriterLockSlim pentru scenarii mai complexe.