Sobes.tech
Junior — Middle

Ako systémy spracovávajú situáciu, keď viaceré vlákna súčasne pristupujú k spoločnej premennej alebo stavu?

sobes.tech AI

Odpoveď od AI

Keď viaceré vlákna súčasne pristupujú k spoločnej premennej alebo stavu, vzniká problém závodnej podmienky (race condition). Aby sa predišlo nesprávnym údajom a zabezpečila správnosť, používajú sa mechanizmy synchronizácie:

  • Zámky (lock, mutex) — umožňujú jednému vláknu výlučne vlastniť zdroj, ostatné čakajú.
  • Monitory (Monitor.Enter/Exit v C#) — flexibilnejší mechanizmus zámkov.
  • Kľúčové slovo lock v C# — zjednodušená syntax pre monitory.
  • Atómové operácie (Interlocked) — pre jednoduché operácie bez úplného zámku.
  • Súčasné kolekcie — vlákno-bezpečné dátové štruktúry.

Príklad s použitím lock v C#:

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

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

Tento prístup zabezpečuje, že iba jedno vlákno mení premennú v danom momente.