Junior — Middle
Какви механизми за синхронизация на нишки знаете и можете да използвате в проектите си?
sobes.tech AI
Отговор от AI
В C# се използват различни механизми за синхронизиране на нишки:
- lock — прост начин за блокиране на критична секция от код.
- Mutex — междупроцесна блокировка, полезна, когато трябва да се синхронизира достъпът между различни процеси.
- Semaphore и SemaphoreSlim — позволяват да се ограничи броят на нишките, които изпълняват определен участък от код едновременно.
- Monitor — по-гъвкав механизъм, на който се базира lock.
- ManualResetEvent и AutoResetEvent — за сигнализация между нишки.
- Конкурентни колекции от пространството имена System.Collections.Concurrent — осигуряват потокобезопасен достъп до колекциите.
Пример за използване на lock:
private readonly object _lockObj = new object();
public void IncrementCounter()
{
lock(_lockObj)
{
// Критична секция
counter++;
}
}