Junior — Middle
Агар дар контексти глобалӣ дар навбати асосӣ dispatch-и синхронӣ истифода баред, чӣ мешавад?
sobes.tech AI
Ҷавоб аз AI
Агар шумо синхрон dispatch (масалан, DispatchQueue.main.sync { ... }) дар асосии навбат аз асосии ҷараён даъват кунед, deadlock (блокиратсияи мутақобил) рух медиҳад.
Сабаб ин аст, ки асосии навбат аллакай бо иҷрои коди ҳозира машғул аст, ва даъвати синхронӣ кӯшиш мекунад, ки як блокро иҷро кунад ва интизор шавад, ки он ба анҷом расад. Аммо блок наметавонад оғоз шавад, то ки коди ҳозира ба анҷом нарасад, ки ба интизории беохир оварда мерасонад.
Аз ин рӯ, бояд аз даъватҳои синхронӣ дар асосии навбат аз асосии ҷараён худдорӣ кард. Ба ҷои он, истифода баред даъватҳои асинхронӣ (DispatchQueue.main.async { ... }), ки блокро дар навбат мегузоранд ва имкон медиҳанд, ки коди ҳозира ба анҷом расад.