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)