Встречается на собеседованиях • сегодня
В чем разница между Semaphore и Mutex
Mutex (взаимное исключение) — это примитив синхронизации, который позволяет только одному потоку получить доступ к ресурсу в определенный момент времени. Он используется для защиты критических секций кода. Владелец мьютекса должен его освободить.
Semaphore (семафор) — это счетчик, который позволяет ограничить количество потоков, одновременно получающих доступ к ресурсу. Семафоры могут быть двоичными (аналогично мьютексу) или счетными (разрешают N потоков).
Ключевые отличия:
- Владение: мьютекс должен освобождаться тем же потоком, который его захватил. Семафоры не имеют владельца.
- Количество: мьютекс всегда двоичный (0 или 1), семафор может быть счетным.
Пример с мьютексом:
python
from threading import Lock
lock = Lock()
lock.acquire()
try:
# критическая секция
finally:
lock.release()Пример с семафором:
python
from threading import Semaphore
sem = Semaphore(3) # разрешает 3 потока
sem.acquire()
try:
# ограниченный ресурс
finally:
sem.release()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы