Sobes.tech
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.