Sobes.tech
Junior

Dispatch grubu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Dispatch Group, Grand Central Dispatch (GCD) çerçevesinde, görevleri gruplayıp, grubun içindeki tüm görevler tamamlandığında bildirim almayı sağlayan bir mekanizmadır.

Ana yöntemler:

  • enter(): Grubun görev sayacını artırır. Asenkron bir göreve başlamadan önce çağrılır.
  • leave(): Grubun görev sayacını azaltır. Asenkron bir görev tamamlandıktan sonra çağrılır.
  • notify(queue:execute:): Belirtilen kuyrukta, grubun görev sayacı sıfıra ulaştığında çalıştırılacak kod bloğunu kaydeder.
  • wait(): Mevcut akışı, grubun görev sayacı sıfıra ulaşana kadar engeller. Ana akışın engellenmemesi için dikkatli kullanılmalıdır.

Kullanım örneği:

import Foundation

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

queue.async(group: group) {
    // Görev 1
    print("Görev 1 çalışıyor")
    Thread.sleep(forTimeInterval: 2)
    print("Görev 1 tamamlandı")
}

queue.async(group: group) {
    // Görev 2
    print("Görev 2 çalışıyor")
    Thread.sleep(forTimeInterval: 1)
    print("Görev 2 tamamlandı")
}

group.notify(queue: DispatchQueue.main) {
    // Bu blok, tüm görevler tamamlandıktan sonra çalışır
    print("Tüm görevler tamamlandı")
}

// Ana akışın hemen bitmemesi için. Gerçek uygulamada, bu RunLoop döngüsü ile yönetilir
// veya senkron bekleme durumunda wait() kullanılır (UI uygulamalarında önerilmez)
Thread.sleep(forTimeInterval: 3)