Middle+
56
questionbank

Что произойдёт, если в AppDelegate в основном потоке вызвать 'dispatchQueue.main.sync'?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Произойдёт Deadlock (взаимная блокировка).

Объяснение:

  1. AppDelegate работает на главном потоке.
  2. dispatchQueue.main.sync пытается выполнить код в главном потоке синхронно, т.е. ждёт завершения выполнения блока кода.
  3. Но главный поток уже занят выполнением AppDelegate и ожидает, пока блок в sync завершится.
  4. Блок в sync не может начать выполнение, потому что главный поток занят ожиданием.

В итоге, главный поток ждёт выполнения блока, а блок ждёт освобождения главного потока — возникает взаимная блокировка. Приложение зависнет.

Пример кода, который вызовет Deadlock:

swift