Назад к вопросам
Junior
179
questionbank
Что такое dispatch группа?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Dispatch Group — это механизм во фреймворке Grand Central Dispatch (GCD), позволяющий объединять задачи и получать уведомление, когда все задачи в группе завершены.
Основные методы:
enter(): Увеличивает счетчик задач в группе. Вызывается перед началом асинхронной задачи.leave(): Уменьшает счетчик задач в группе. Вызывается после завершения асинхронной задачи.notify(queue:execute:): Регистрирует блок кода, который будет выполнен на указанной очереди после того, как счетчик задач в группе достигнет нуля.wait(): Блокирует текущий поток до тех пор, пока счетчик задач в группе не достигнет нуля. Следует использовать с осторожностью, чтобы избежать блокировки основного потока.
Пример использования:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Задача 1
print("Задача 1 выполняется")
Thread.sleep(forTimeInterval: 2)
print("Задача 1 завершена")
}
queue.async(group: group) {
// Задача 2
print("Задача 2 выполняется")
Thread.sleep(forTimeInterval: 1)
print("Задача 2 завершена")
}
group.notify(queue: DispatchQueue.main) {
// Этот блок выполнится после завершения всех задач
print("Все задачи завершены")
}
// Чтобы main поток не завершился сразу. В реальном приложении это управляется циклом RunLoop
// Или wait() в случае синхронного ожидания (не рекомендуется в UI-приложениях)
Thread.sleep(forTimeInterval: 3)