Junior — Middle
Ce comportament se așteaptă dacă se apelează o sarcină sincronă pe thread-ul principal prin DispatchQueue.main.sync în interiorul metodei AppDelegate?
sobes.tech AI
Răspuns de la AI
Вызов DispatchQueue.main.sync внутри метода AppDelegate (который уже выполняется на главном потоке) приведёт к взаимной блокировке (deadlock). Это происходит потому, что:
DispatchQueue.main.syncпытается синхронно выполнить задачу на главном потоке.- Главный поток уже занят выполнением текущего метода
AppDelegateи ждёт завершения вызова. - Задача, переданная в
sync, не может начаться, так как главный поток занят.
В результате оба процесса ждут друг друга бесконечно, что приводит к зависанию приложения.
Чтобы избежать этого, нужно использовать DispatchQueue.main.async для асинхронного выполнения или выполнять синхронные вызовы на других потоках, но не на главном.