Sobes.tech
Junior — Middle

Можете ли да изброите основните примитиви за синхронизация, предоставени от стандартната библиотека?

sobes.tech AI

Отговор от AI

В стандартната библиотека на C# (в пространството от имена System.Threading) са налични следните основни примитиви за синхронизация:

  • lock (Monitor) — осигурява изключителен достъп до ресурс, блокирайки участък от код.
  • Mutex — междупроцесен mutex, използва се за синхронизация между процеси.
  • Semaphore и SemaphoreSlim — ограничават броя на нишките, които имат достъп до ресурс едновременно.
  • AutoResetEvent и ManualResetEvent — събития за сигнализация между нишки.
  • ReaderWriterLockSlim — позволява на няколко нишки да четат ресурс едновременно, но блокира писането.
  • SpinLock — лек примитив за кратки блокировки без превключване на контекста.

Пример за използване на lock:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // код, който трябва да се изпълнява само от една нишка едновременно
    }
}