Junior
Dispatch guruh nima?
sobes.tech AI
AIdan javob
Dispatch Group — bu Grand Central Dispatch (GCD) ramkasida mavjud bo‘lib, vazifalarni guruhlash va guruhdagi barcha vazifalar tugagach xabar berishni ta’minlaydi.
Asosiy metodlar:
enter(): Guruhdagi vazifa hisoblagichini oshiradi. Asinxron vazifa boshlashdan oldin chaqiriladi.leave(): Guruhdagi vazifa hisoblagichini kamaytiradi. Asinxron vazifa tugagach chaqiriladi.notify(queue:execute:): Guruhdagi vazifa hisoblagichi nolga teng bo‘lgach, belgilangan navbatda bajariladigan kod blokini ro‘yxatga oladi.wait(): Hozirgi oqimni, guruhdagi vazifa hisoblagichi nolga teng bo‘lgunga qadar, bloklaydi. Asosiy oqimni bloklamaslik uchun ehtiyotkorlik bilan foydalanish kerak.
Foydalanish misoli:
import Foundation
let group = DispatchGroup()
let queue = DispatchQueue.global()
queue.async(group: group) {
// Vazifa 1
print("Vazifa 1 bajarilmoqda")
Thread.sleep(forTimeInterval: 2)
print("Vazifa 1 tugadi")
}
queue.async(group: group) {
// Vazifa 2
print("Vazifa 2 bajarilmoqda")
Thread.sleep(forTimeInterval: 1)
print("Vazifa 2 tugadi")
}
group.notify(queue: DispatchQueue.main) {
// Bu blok barcha vazifalar tugagach bajariladi
print("Barcha vazifalar tugadi")
}
// Asosiy oqimning darhol tugamasligi uchun. Haqiqiy ilovada, bu RunLoop tsikli bilan boshqariladi
// Yoki sinxron kutish uchun wait() ishlatiladi (UI ilovalarida tavsiya etilmaydi)
Thread.sleep(forTimeInterval: 3)