Sobes.tech
Back to tasks
Middle — Senior
42

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

Companies where asked:

SelectySelecty
Get help with live coding in real time with Sobes Copilot
Task condition

Дана небольшая программа на 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 из главного потока приводит к дедлоку, поэтому часть кода может не выполниться.