Junior — Middle
Hangi koşullarda main.sync kullanımı iş parçacıklarının karşılıklı kilitlenmesine neden olmaz?
sobes.tech yapay zeka
AI'dan gelen yanıt
DispatchQueue.main.sync kullanımı, yalnızca çağrı ana akıştan yapılmadığı sürece karşılıklı kilitlenmeye (deadlock) neden olmaz. Eğer main.sync ana akıştan çağrılırsa, bu akış, başlaması mümkün olmayan bloğun tamamlanmasını bekleyecek — bu da deadlock'e yol açar.
Güvenli kullanım örneği:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// UI güncellemesi
}
}
Burada, main.sync çağrısı arka plan akışından yapıldığı için kilitlenme oluşmaz. Ana kural, DispatchQueue.main.sync'i ana akıştan asla çağırmamaktır.