Sobes.tech
Junior — Middle

Qaysi sharoitlarda main.sync foydalanilishi iplar o'rtasida o'zaro bloklanishga olib kelmaydi?

sobes.tech AI

AIdan javob

DispatchQueue.main.sync ni foydalanish faqat asosiy oqimdan chaqirilmasdan bo‘lsa, o‘zaro blokirovka (deadlock)ga olib kelmaydi. Agar siz main.sync ni asosiy oqimdan chaqirsangiz, bu oqim blokni tugashini kutadi, bu esa boshlanishi mumkin emas, chunki asosiy oqim allaqachon band — bu deadlockga olib keladi.

Xavfsiz foydalanish misoli:

DispatchQueue.global().async {
    DispatchQueue.main.sync {
        // UI yangilash
    }
}

Bu yerda main.sync chaqiruvi fon oqimidan amalga oshirilmoqda, shuning uchun blokirovka yuzaga kelmaydi. Asosiy qoida — DispatchQueue.main.sync ni hech qachon asosiy oqimdan chaqirmang.