Sobes.tech
Junior — Middle

DispatchGroup strukturu nədir və çoxsaylı asinxron tapşırıqların icrasını necə sinxronlaşdırmaq üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

DispatchGroup — bu iOS (GCD) mexanizmi olub, bir neçə asinxron vəzifəni qruplaşdırmağa və onların tamamlanmasını izləməyə imkan verir. Bu, icraatı sinxronlaşdırmağa kömək edir, məsələn, bütün vəzifələr qrupdan tamamlandıqdan sonra müəyyən bir kodu icra etmək üçün.

İş prinsipi:

  • DispatchGroup yaradılır.
  • Hər bir asinxron vəzifə enter() ilə başlamadan əvvəl və leave() ilə tamamlandıqdan sonra qrupa əlavə olunur.
  • Bütün vəzifələr tamamlandıqda bildiriş almaq üçün notify(queue:) çağırıla bilər.

Nümunə:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asinxron vəzifə 1
    print("Vəzifə 1 başladı")
    sleep(2)
    print("Vəzifə 1 tamamlandı")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asinxron vəzifə 2
    print("Vəzifə 2 başladı")
    sleep(1)
    print("Vəzifə 2 tamamlandı")
    group.leave()
}

group.notify(queue: .main) {
    print("Bütün vəzifələr tamamlandı")
}

Bu şəkildə, DispatchGroup paralel olaraq həyata keçirilən bir neçə əməliyyatın tamamlanmasını gözləməyə və sonra kodu icra etməyə kömək edir.