Sobes.tech
Junior — Middle

Bir DispatchGroup yapısının ne olduğunu ve çoklu asenkron görevlerin yürütülmesini nasıl senkronize etmek için kullanıldığını açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

DispatchGroup, iOS'te (GCD) birden fazla asenkron görevi gruplandırmaya ve tamamlanmalarını izlemeye olanak tanıyan bir mekanizmadır. Tüm görevler tamamlandıktan sonra belirli bir kodu çalıştırmak gibi senkronizasyon sağlar.

Çalışma prensibi:

  • Bir DispatchGroup oluşturulur.
  • Her asenkron görev, başlamadan önce enter() ile ve tamamlandıktan sonra leave() ile gruba eklenir.
  • Tüm görevler tamamlandığında bildirim almak için notify(queue:) çağrılabilir.

Örnek:

let group = DispatchGroup()

group.enter()
DispatchQueue.global().async {
    // Asenkron görev 1
    print("Görev 1 başladı")
    sleep(2)
    print("Görev 1 tamamlandı")
    group.leave()
}

group.enter()
DispatchQueue.global().async {
    // Asenkron görev 2
    print("Görev 2 başladı")
    sleep(1)
    print("Görev 2 tamamlandı")
    group.leave()
}

group.notify(queue: .main) {
    print("Tüm görevler tamamlandı")
}

Bu şekilde, DispatchGroup, paralel olarak yürütülen birkaç işlemin tamamlanmasını beklemeye ve ardından kodu çalıştırmaya yardımcı olur.