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)
{
// код, който трябва да се изпълнява само от една нишка едновременно
}
}