Sobes.tech
Back to questions
Junior — Middle
69

Как осуществляется синхронизация нескольких асинхронных задач с помощью DispatchGroup?

Companies where asked
Вкусно и точкаВкусно и точка

Answer from AI

sobes.tech AI

DispatchGroup в iOS используется для синхронизации нескольких асинхронных задач. Он позволяет отслеживать, когда группа задач завершила выполнение.

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

  1. Создаётся объект DispatchGroup.
  2. Каждая асинхронная задача добавляется в группу с помощью group.enter() перед началом и group.leave() после завершения.
  3. Можно вызвать group.notify(queue:), чтобы выполнить блок кода после того, как все задачи в группе завершатся.

Пример:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Асинхронная задача 1
    print("Task 1 started")
    // ... работа ...
    print("Task 1 finished")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Асинхронная задача 2
    print("Task 2 started")
    // ... работа ...
    print("Task 2 finished")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Все задачи завершены")
}

Таким образом, DispatchGroup помогает дождаться завершения нескольких параллельных операций и выполнить последующий код.