Встречается на собеседованиях • сегодня
В чем разница между Semaphore и Mutex
Semaphore и Mutex — это примитивы синхронизации, но с разными сценариями использования:
- Владение:
Mutex— эксклюзивный доступ. Только один поток может владеть им одновременно.Semaphore— разрешает доступ нескольким потокам (задается максимальное количество).
-
Освобождение:
Mutexдолжен освобождаться тем же потоком, который его захватил.Semaphoreможет освобождаться любым потоком.
-
Использование:
Mutex— для защиты критических секций (например, изменение общего ресурса).Semaphore— для ограничения доступа к пулу ресурсов (например, подключения к БД).
Пример:
csharp
// Mutex
var mutex = new Mutex();
mutex.WaitOne();
// Критическая секция
mutex.ReleaseMutex();
// Semaphore (макс. 5 потоков)
var semaphore = new Semaphore(5, 5);
semaphore.WaitOne();
// Работа с ресурсом
semaphore.Release();Итог: Mutex — для эксклюзивного доступа, Semaphore — для ограниченного параллелизма.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
