Middle+
AppDelegate'de ana akışta 'dispatchQueue.main.sync' çağrılırsa ne olur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir Deadlock (karşılıklı kilitlenme) oluşur.
Açıklama:
AppDelegateana iş parçacığında çalışır.dispatchQueue.main.synckodu, ana iş parçacığında eşzamanlı olarak çalışmaya çalışır, yani kod bloğunun tamamlanmasını bekler.- Ama ana iş parçacığı zaten
AppDelegate'i çalıştırmakla meşguldür vesynciçindeki bloğun tamamlanmasını bekler. synciçindeki blok, ana iş parçacığı beklediği için başlamaz.
Özetle, ana iş parçacığı bloğun tamamlanmasını beklerken, blok da ana iş parçacığının serbest kalmasını bekler — bir deadlock oluşur. Uygulama donar.
Deadlock oluşturacak kod örneği:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
print("Uygulama başlatıldı")
// Bu çağrı deadlock'a neden olur
DispatchQueue.main.sync {
print("Bu kod asla çalışmayacak")
}
print("Bu kod da ulaşmayacak")
return true
}