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
lockv 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.