Back to questions
СБЕР Тех
Junior — Middle
64
Можешь перечислить основные примитивы синхронизации, предоставляемые стандартной библиотекой?
Companies where asked
Answer from AI
sobes.tech AI
В стандартной библиотеке C# (в пространстве имён System.Threading) доступны следующие основные примитивы синхронизации:
- lock (Monitor) — обеспечивает эксклюзивный доступ к ресурсу, блокируя участок кода.
- Mutex — межпроцессный мьютекс, используется для синхронизации между процессами.
- Semaphore и SemaphoreSlim — ограничивают количество потоков, одновременно получающих доступ к ресурсу.
- AutoResetEvent и ManualResetEvent — события для сигнализации между потоками.
- ReaderWriterLockSlim — позволяет нескольким потокам читать ресурс одновременно, но блокирует запись.
- SpinLock — легковесный примитив для коротких блокировок без переключения контекста.
Пример использования lock:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// код, который должен выполняться только одним потоком одновременно
}
}