Junior — Middle
Kako sistemi obrađuju situaciju kada više niti istovremeno pristupaju zajedničkoj promenljivoj ili stanju?
sobes.tech АИ
Одговор од АИ
Када више нитова истовремено приступа заједничкој променљивој или стању, јавља се проблем трка (race condition). Да би се избегли неисправни подаци и обезбедила исправност, користе се механизми синхронизације:
- Блокаде (lock, mutex) — омогућавају једном ниту да ексклузивно поседује ресурс, други чекају.
- Монитори (Monitor.Enter/Exit у C#) — флексибилнији механизам блокирања.
- Кључна реч
lockу C# — поједностављена синтакса за мониторе. - Атомске операције (Interlocked) — за једноставне операције без потпуног блокирања.
- Паралелне колекције — структуре података безбедне за више нитова.
Пример са lock у C#:
private readonly object _sync = new object();
private int _counter = 0;
public void Increment()
{
lock(_sync)
{
_counter++;
}
}
Овај приступ гарантује да само једна нит у одређеном тренутку мења променљиву.