Junior — Middle
Senkrone kuyruğunda sync metodunu çağırırken kilit nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
GCD (Grand Central Dispatch) içindeki seri kuyruğa sync yöntemi çağrıldığında, mevcut akış sync'ye iletilen görev tamamlanana kadar engellenir. Aynı akıştan, yani bu kuyruğu yöneten akıştan sync çağrılırsa, bir deadlock oluşur çünkü kuyruk, mevcut görev tamamlanmadan yeni bir görevi başlatamaz ve mevcut akış yeni görevin tamamlanmasını bekler.
Örnek:
let serialQueue = DispatchQueue(label: "com.ornek.serial")
serialQueue.sync {
print("Görev yürütülüyor")
}
// Mevcut akış, görevin tamamlanmasına kadar engellenir
Aynı kuyruğa, bu kuyruğun içindeki bir görevden sync çağrısı yapmamak önemlidir, böylece karşılıklı kilitlenmeler önlenir.