Sobes.tech
Junior — Middle

Cum gestionează sistemele situația în care mai multe fire accesează simultan o variabilă sau stare comună?

sobes.tech AI

Răspuns de la AI

Când mai multe fire accesează simultan o variabilă sau stare comună, apare o problemă de condiție de curse (race condition). Pentru a evita datele incorecte și a asigura corectitudinea, se folosesc mecanisme de sincronizare:

  • Blocări (lock, mutex) — permit unui fir să dețină exclusiv resursa, ceilalți așteaptă.
  • Monitoare (Monitor.Enter/Exit în C#) — mecanism de blocare mai flexibil.
  • Cuvântul cheie lock în C# — sintaxă simplificată pentru monitoare.
  • Operații atomice (Interlocked) — pentru operații simple fără blocare completă.
  • Colecții concurente — structuri de date sigure pentru mai multe fire.

Exemplu cu lock în C#:

private readonly object _sync = new object();
private int _counter = 0;

public void Increment()
{
    lock(_sync)
    {
        _counter++;
    }
}

Această abordare garantează că doar un fir modifică variabila într-un moment dat.