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)