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