Junior — Middle
Hansı şərtlərdə main.sync istifadəsi iş parçalarının qarşılıqlı bloklanmasına səbəb olmayacaq?
sobes.tech Süni İntellekt
AI-dan cavab
DispatchQueue.main.sync istifadəsi yalnız əsas axından çağırılmadıqda qarşılıqlı kilidlənməyə (deadlock) səbəb olmayacaq. Əgər main.sync-i əsas axından çağırırsınızsa, bu axın blokun tamamlanmasını gözləyəcək, bu isə başlaya bilməz, çünki əsas axın artıq məşğuldur — bu deadlock-ə səbəb olur.
Təhlükəsiz istifadə nümunəsi:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// UI yeniləməsi
}
}
Burada, main.sync çağırışı fon axınından həyata keçirilir, ona görə də bloklama baş vermir. Əsas qayda — heç vaxt DispatchQueue.main.sync-i əsas axından çağırmayın.