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

В чем разница между Semaphore и Mutex

Mutex (взаимное исключение) — это примитив синхронизации, который позволяет только одному потоку получить доступ к ресурсу в определенный момент времени. Он используется для защиты критических секций кода. Владелец мьютекса должен его освободить.

Semaphore (семафор) — это счетчик, который позволяет ограничить количество потоков, одновременно получающих доступ к ресурсу. Семафоры могут быть двоичными (аналогично мьютексу) или счетными (разрешают N потоков).

Ключевые отличия:

  1. Владение: мьютекс должен освобождаться тем же потоком, который его захватил. Семафоры не имеют владельца.
  2. Количество: мьютекс всегда двоичный (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()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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