Back to questions
Junior — Middle
74
Можно ли при использовании GCD синхронно ожидать выполнения нескольких задач и продолжить выполнение после их завершения?
Answer from AI
sobes.tech AI
Да, с помощью GCD можно синхронно ожидать выполнения нескольких задач и продолжить выполнение после их завершения. Для этого обычно используют DispatchGroup. Вы добавляете задачи в группу, запускаете их асинхронно, а затем вызываете метод wait() у группы, который блокирует текущий поток до завершения всех задач в группе.
Пример на Swift:
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// Асинхронная задача 1
print("Task 1 started")
sleep(2)
print("Task 1 finished")
group.leave()
}
group.enter()
DispatchQueue.global().async {
// Асинхронная задача 2
print("Task 2 started")
sleep(1)
print("Task 2 finished")
group.leave()
}
group.wait() // Ожидаем завершения обеих задач
print("Все задачи завершены")
Таким образом, можно синхронно дождаться выполнения нескольких асинхронных задач.