Sobes.tech
Junior — Middle

Kā sistēmas apstrādā situāciju, kad vairāki pavedieni vienlaikus piekļūst kopīgai mainīgajai vai stāvoklim?

sobes.tech AI

Atbilde no AI

Kad vairākas pavedieni vienlaikus piekļūst kopīgai mainīgajai vai stāvoklim, rodas sacensību stāvoklis (race condition). Lai izvairītos no neparediem datiem un nodrošinātu pareizību, tiek izmantoti sinhronizācijas mehānismi:

  • Aizslēgumi (lock, mutex) — ļauj vienam pavedienam ekskluzīvi kontrolēt resursu, citi gaida.
  • Monitori (Monitor.Enter/Exit C#) — elastīgāks aizslēgšanas mehānisms.
  • C# lock atslēgvārds — vienkāršota sintakse monitoriem.
  • Atomiskas operācijas (Interlocked) — vienkāršām operācijām bez pilnas aizslēgšanas.
  • Vienlaicīgas kolekcijas — pavedienu drošas datu struktūras.

Piemērs ar lock C#:

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

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

Šī pieeja garantē, ka tikai viens pavediens vienlaikus maina mainīgo.