Sobes.tech
Junior — Middle

DispatchGroup yordamida bir nechta asinxron vazifalarni qanday sinxronlashtirish mumkin?

sobes.tech AI

AIdan javob

iOS-da DispatchGroup bir nechta asinxron vazifalarni sinxronlashtirish uchun ishlatiladi. U vazifa guruhining tugaganligini kuzatishga imkon beradi.

Ishlash prinsipi:

  1. DispatchGroup obyekti yaratiladi.
  2. Har bir asinxron vazifa group.enter() yordamida boshlashdan oldin va group.leave() yordamida tugashidan so'ng guruhga qo'shiladi.
  3. Guruhdagi barcha vazifalar tugaganidan so'ng, group.notify(queue:) chaqirilishi mumkin.

Misol:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asinxron vazifa 1
    print("Vazifa 1 boshlandi")
    // ... ish ...
    print("Vazifa 1 tugadi")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asinxron vazifa 2
    print("Vazifa 2 boshlandi")
    // ... ish ...
    print("Vazifa 2 tugadi")
    group.leave()
}

group.notify(queue: DispatchQueue.main) {
    print("Barcha vazifalar tugadi")
}

Shu tarzda, DispatchGroup bir nechta parallel operatsiyaning tugashini kutishga va keyingi kodni bajarishga yordam beradi.