Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что такое DispatchGroup и DispatchSemaphore?

Вопрос проверяет знание инструментов GCD для синхрониции нескольких задач и ограничения параллелизма.

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

DispatchGroup позволяет группировать несколько асинхронных задач и получать уведомление, когда все они завершатся. DispatchSemaphore контролирует доступ к ресурсам, уменьшая либо увеличивая счётчик и блокируя поток при нулевом значении до сигнала.

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

DispatchGroup:

  • Создаёт группу:

    let group = DispatchGroup()
  • Помечает начало и конец задачи:

    group.enter()
    queue.async {
        	// работа
        	group.leave()
    }
  • Ожидает окончания:

    group.notify(queue: .main) { print("Готово") }

DispatchSemaphore:

  • Инициализация с начальным счётчиком:

    let sem = DispatchSemaphore(value: 2)
  • Перед выполнением ресурсоёмкой задачи — wait(), после — signal():

    sem.wait()
    // работа
    sem.signal()
  • Ограничивает число одновременных задач.

 Когда применять:

  • DispatchGroup — чтобы дождаться набора параллельных задач.

  • DispatchSemaphore — чтобы ограничить параллелизм (например, пул соединений).

Вывод:
Эти инструменты дают контроль за порядком выполнения и количеством одновременных операций, что важно для безопасной работы с ресурсами.

Уровень

  • Рейтинг:

    1

  • Сложность:

    5

Навыки

  • Swift

    Swift

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

#dispatchgroup

#semaphore

#synchronization

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