Sobes.tech
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)