Какие примитивы синхронизации знаешь?

В стандартной библиотеке C# (в пространстве имён System.Threading) доступны следующие основные примитивы синхронизации:

Короткий ответ

Что ответить на собеседовании

В стандартной библиотеке C# (в пространстве имён System.Threading) доступны следующие основные примитивы синхронизации:

Подробный разбор

Ответ с пояснениями

В стандартной библиотеке C# (в пространстве имён System.Threading) доступны следующие основные примитивы синхронизации:

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

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

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // код, который должен выполняться только одним потоком одновременно
    }
}

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку