Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что такое semaphore и для чего он используется?

Вопрос проверяет понимание базовых примитивов синхронизации и управления доступом к общим ресурсам.

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

Semaphore — это механизм синхронизации, который ограничивает количество потоков, одновременно выполняющих участок кода. Он работает на основе счётчика, который уменьшается при входе и увеличивается при выходе. Если счётчик равен нулю, поток ждёт. Semaphore часто используется в GCD для контроля параллелизма. Он помогает избежать гонок данных.

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

Semaphore применяется для управления конкурентным доступом к ресурсам и координации выполнения потоков.

Определение

Semaphore — это примитив синхронизации, основанный на целочисленном счётчике, который контролирует доступ к ресурсу.

Принцип работы

Перед тем как перейти к шагам, важно понять, что semaphore не привязан к конкретному потоку.

  1. Semaphore инициализируется числом

  2. wait() уменьшает счётчик

  3. Если счётчик равен нулю — поток блокируется

  4. signal() увеличивает счётчик и разблокирует ожидающий поток

let semaphore = DispatchSemaphore(value: 2)

semaphore.wait()
// критическая секция
semaphore.signal()

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

  • Ограничение количества параллельных задач

  • Защита общих ресурсов

  • Синхронизация асинхронных операций

Вывод

Semaphore полезен, когда нужно контролировать уровень параллелизма. Однако его следует использовать аккуратно, чтобы не создать deadlock.

  • Аватар

    iOS Guru

    Roman Isakov

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • IOS

    IOS

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

#semaphore

#synchronization

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

  • Аватар

    iOS Guru

    Roman Isakov

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