Назад к задачам
Middle — Senior
6

Определите порядок вывода чисел в программе (вариант 4)

Компании, где спрашивали:

SelectySelecty
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Дана небольшая программа на Swift, в которой последовательно вызываются функции, выводящие числа на консоль, а также используются асинхронные и синхронные вызовы диспетчерской очереди main. Требуется определить, какие числа появятся в выводе и в каком порядке, учитывая особенности работы DispatchQueue.main.async и DispatchQueue.main.sync.

func runTask() {
    print(5)

    DispatchQueue.main.async {
        print(10)
    }

    print(15)

    DispatchQueue.main.sync {
        print(20)
    }

    print(25)
}

func runAnotherTask() {
    print(30)
}

// Main Thread
runTask()
runAnotherTask()

Обратите внимание, что вызов DispatchQueue.main.sync из главного потока приводит к дедлоку, поэтому часть кода может не выполниться.