Sobes.tech
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++;
    }
}