Встречается на собеседованиях • сегодня

Что такое примитивы синхронизации

Примитивы синхронизации — это механизмы, обеспечивающие корректное взаимодействие потоков при работе с общими ресурсами. Основные примитивы в C#:

  1. lock — простейший способ, блокирует критическую секцию для одного потока:
csharp
private readonly object _lockObj = new object();
lock (_lockObj) 
{
    // критическая секция
}
  1. Monitor — более гибкая альтернатива lock с методами Wait/Pulse:
csharp
Monitor.Enter(_lockObj);
try { /* работа */ }
finally { Monitor.Exit(_lockObj); }
  1. Mutex — межпроцессная блокировка:
csharp
using var mutex = new Mutex(false, "Global\\MyMutex");
mutex.WaitOne();
try { /* работа */ }
finally { mutex.ReleaseMutex(); }
  1. Semaphore — ограничивает число потоков:
csharp
using var sem = new Semaphore(3, 3); // максимум 3 потока
sem.WaitOne();
try { /* работа */ }
finally { sem.Release(); }
  1. AutoResetEvent/ManualResetEvent — сигнализация между потоками.

Выбор зависит от сценария: для простых случаев — lock, для сложных — другие примитивы. Важно избегать deadlock'ов и минимизировать время удержания блокировок.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы