Sobes.tech
Junior

Dispatch qrupu nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Dispatch Group, Grand Central Dispatch (GCD) çərçivəsində mövcud olan mexanizmdir və bu mexanizm tapşırıqları qruplaşdırmağa və qrupdakı bütün tapşırıqlar tamamlandıqda bildiriş almağa imkan verir.

Əsas metodlar:

  • enter(): Qrupdakı tapşırıqların sayğacını artırır. Asinxron tapşırıq başlamazdan əvvəl çağırılır.
  • leave(): Qrupdakı tapşırıqların sayğacını azaldır. Asinxron tapşırıq tamamlandıqdan sonra çağırılır.
  • notify(queue:execute:): Qrupdakı tapşırıqların sayğacı sıfıra çatdıqda, göstərilən növbədə icra olunacaq kod blokunu qeydiyyata alır.
  • wait(): Mövcud axını, qrupdakı tapşırıqların sayğacı sıfıra çatana qədər bloklayır. Əsas axını bloklamamaq üçün ehtiyatla istifadə edilməlidir.

İstifadə nümunəsi:

import Foundation

let group = DispatchGroup()
let queue = DispatchQueue.global()

queue.async(group: group) {
    // Tapşırıq 1
    print("Tapşırıq 1 icra olunur")
    Thread.sleep(forTimeInterval: 2)
    print("Tapşırıq 1 tamamlandı")
}

queue.async(group: group) {
    // Tapşırıq 2
    print("Tapşırıq 2 icra olunur")
    Thread.sleep(forTimeInterval: 1)
    print("Tapşırıq 2 tamamlandı")
}

group.notify(queue: DispatchQueue.main) {
    // Bu blok bütün tapşırıqlar tamamlandıqdan sonra icra olunacaq
    print("Bütün tapşırıqlar tamamlandı")
}

// Əsas axının dərhal bitməməsi üçün. Əsl tətbiqdə, bu RunLoop dövrü ilə idarə olunur
// Yaxud sinxron gözləmə üçün wait() istifadə olunur (UI tətbiqlərində tövsiyə edilmir)
Thread.sleep(forTimeInterval: 3)