Sobes.tech
Junior — Middle

Kas on DispatchGroup struktuur ja kuidas seda kasutatakse mitme asünkroonse ülesande täitmise sünkroniseerimiseks?

sobes.tech AI

Vastus AI-lt

DispatchGroup on mehhanism iOS-is (GCD), mis võimaldab grupeerida mitu asünkroonset ülesannet ja jälgida nende lõpetamist. See aitab sünkroniseerida täitmist, näiteks käivitada teatud kood pärast kõigi grupi ülesannete lõpetamist.

Tööpõhimõte:

  • Loobakse DispatchGroup.
  • Iga asünkroonne ülesanne lisatakse gruppi enter() abil enne alustamist ja leave() abil pärast lõpetamist.
  • Võite kutsuda välja notify(queue:), et saada teatis, kui kõik ülesanded grupis on lõpetatud.

Näide:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asünkroonne ülesanne 1
    print("Ülesanne 1 algas")
    sleep(2)
    print("Ülesanne 1 lõpetas")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asünkroonne ülesanne 2
    print("Ülesanne 2 algas")
    sleep(1)
    print("Ülesanne 2 lõpetas")
    group.leave()
}

group.notify(queue: .main) {
    print("Kõik ülesanded on lõpetatud")
}

Nii aitab DispatchGroup oodata mitme paralleelse operatsiooni lõpetamist ja seejärel käivitada järgnev kood.