Junior — Middle
Какво поведение се очаква, ако извикате синхронна задача на основния поток чрез DispatchQueue.main.sync в метода AppDelegate?
sobes.tech AI
Отговор от AI
Вызов DispatchQueue.main.sync внутри метода AppDelegate (который уже выполняется на главном потоке) приведёт к взаимной блокировке (deadlock). Это происходит потому, что:
DispatchQueue.main.syncпытается синхронно выполнить задачу на главном потоке.- Главный поток уже занят выполнением текущего метода
AppDelegateи ждёт завершения вызова. - Задача, переданная в
sync, не может начаться, так как главный поток занят.
В результате оба процесса ждут друг друга бесконечно, что приводит к зависанию приложения.
Чтобы избежать этого, нужно использовать DispatchQueue.main.async для асинхронного выполнения или выполнять синхронные вызовы на других потоках, но не на главном.