Sobes.tech
Junior — Middle

Qlobal kontekstdə əsas növbədə sinxron dispatch istifadə etsəniz, nə baş verər?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas növbədə (məsələn, DispatchQueue.main.sync { ... }) sinxron dispatch çağırışını əsas axın üzərində əsas axından çağırsaq, deadlock (öz-özünə kilidlənmə) baş verəcək.

Səbəb odur ki, əsas növbə artıq mövcud kodu icra edir və sinxron çağırış, onun tamamlanmasını gözləyən bir blok icra etməyə çalışır. Amma blok başlamazdan əvvəl mövcud kodun bitməsi lazımdır, bu da sonsuz gözləməyə səbəb olur.

Buna görə, əsas axından əsas növbəyə sinxron çağırışlardan qaçınmaq lazımdır. Əvəzinə, blokları növbəyə qoyan və mövcud kodun tamamlanmasına imkan verən asinxron çağırışlar (DispatchQueue.main.async { ... }) istifadə edin.