Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: semaphore, mutex

Какие задачи решают семафоры и мьютексы?

Вопрос проверяет понимание примитивов синхронизации и работы многопоточности.

Короткий ответ

Семафоры и мьютексы используются для синхронизации потоков и предотвращения гонок данных. Мьютекс позволяет только одному потоку выполнять критическую секцию. Семафор позволяет ограничить количество потоков, которые могут работать одновременно. Они применяются при работе с общими ресурсами.

Длинный ответ

Зачем нужны примитивы синхронизации

Когда несколько потоков работают с общими данными, может возникнуть ситуация, называемая race condition — результат зависит от порядка выполнения потоков.

Чтобы этого избежать, используются механизмы блокировки.

Что такое мьютекс

Определение:
Мьютекс — это примитив синхронизации, который гарантирует, что только один поток может выполнить критическую секцию.

Пример:

lock = threading.Lock()

with lock:
    shared_counter += 1

Пока один поток удерживает lock, остальные ждут.

Что такое семафор

Определение:
Семафор — это счетчик, который ограничивает количество потоков, имеющих доступ к ресурсу одновременно.

Пример:

sem = threading.Semaphore(3)

with sem:
    process_request()

Одновременно выполнятся не более 3 потоков.

Где используется

  1. Ограничение количества подключений

  2. Пулы соединений

  3. Ограничение API-запросов

  4. Работа с файлами или оборудованием

Различие по сути

Мьютекс:

  • бинарная блокировка

  • один поток

Семафор:

  • счетчик

  • несколько потоков

Вывод

Мьютекс применяют для защиты данных, семафор — для ограничения параллелизма.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#semaphore

#mutex

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.