Sobes.tech
Junior — Middle

DispatchGroup tuzilmasi nima ekanligini va u qanday qilib bir nechta asinxron vazifalarni sinxronlashtirish uchun ishlatilishini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

DispatchGroup — bu iOS (GCD) dagi bir mexanizm bo‘lib, u bir nechta asinxron vazifalarni guruhlash va ularning yakunlanishini kuzatishga imkon beradi. U bajarilishni sinxronlashtirishga yordam beradi, masalan, barcha vazifalar guruhdan yakunlangandan so‘ng ma'lum bir kodni bajarish uchun.

Ishlash prinsipi:

  • DispatchGroup yaratiladi.
  • Har bir asinxron vazifa enter() yordamida boshlashdan oldin va leave() yordamida tugashdan so‘ng guruhga qo‘shiladi.
  • Barcha vazifalar tugaganida xabar olish uchun notify(queue:) chaqirilishi mumkin.

Misol:

let group = DispatchGroup()

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

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

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

Shu tarzda, DispatchGroup bir nechta parallel operatsiyaning yakunlanishini kutishga va keyinchalik kodni bajarishga yordam beradi.