Sobes.tech
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("Все задачи завершены")

Таким образом, можно синхронно дождаться выполнения нескольких асинхронных задач.