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 valeave()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.