Встречается на 1% собеседований по Python
В чем разница между 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
интервью вопросы и ответы