Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про IOS: binary, semaphore

Что произойдёт, если semaphore инициализировать со значением 1?

Вопрос проверяет понимание поведения семафоров при разных начальных значениях.

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

Semaphore со значением 1 будет вести себя как mutex. Только один поток сможет войти в критическую секцию одновременно. Остальные потоки будут ждать, пока счётчик снова не станет равным 1. Такой семафор часто называют бинарным. Однако семантически он всё равно остаётся семафором, а не mutex.

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

Начальное значение semaphore напрямую определяет его поведение.

Определение

Бинарный semaphore — это семафор со значением счётчика 0 или 1.

Как он работает

Перед перечислением важно отметить, что семафор не отслеживает владельца.

  1. Значение 1 — доступ разрешён

  2. Первый поток проходит и уменьшает счётчик до 0

  3. Остальные потоки блокируются

  4. После signal() доступ снова открывается

let semaphore = DispatchSemaphore(value: 1)

Отличие от mutex

  • Semaphore не знает, кто его захватил

  • Возможно некорректное освобождение

  • Нет защиты от двойного signal()

Вывод

Semaphore со значением 1 может заменить mutex, но использовать его для этого не рекомендуется без явной необходимости.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • IOS

    IOS

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

#binary

#semaphore

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

  • Аватар

    iOS Guru

    Roman Isakov

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