Sobes.tech
Junior — Middle

Глобалдык контекстте негизги кезекке синхрондуу бөлүштүрүүнү колдонсоңуз, эмне болот?

sobes.tech AI

AIден жооп

Эгер сиз синхрондуу dispatchти (мисалы, DispatchQueue.main.sync { ... }) негизги кезекке негизги агымдан чакырсаңыз, deadlock (өзара блоктоо) болот.

Себеби, негизги кезек азыркы кодду иштетип жатат, жана синхрондуу чакыруусу блокту иштетүүгө аракет кылып жатат жана анын аяктоосун күтүп жатат. Бирок блок башталбайт, эгерде азыркы код аяктагандан кийин гана башталат, бул чексиз күтүүгө алып келет.

Ошондуктан, негизги агымдан негизги кезекке синхрондуу чакыруулардан качуу керек. Ал үчүн, асинхрондуу чакырууларды (DispatchQueue.main.async { ... }) колдонуп, блокту кезекке коюп, азыркы коддун аяктоосуна мүмкүндүк берүү керек.