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.