Sobes.tech
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)
    {
        // код, который должен выполняться только одним потоком одновременно
    }
}