Что выведет код Middle Корутины и structured concurrency обновлено

coroutineScope ждёт детей

Вопрос

Что выведет код? По строке на каждый вывод.

import kotlinx.coroutines.*

suspend fun loadAll() = coroutineScope {
    launch { delay(200); println("profile") }
    launch { delay(100); println("feed") }
    println("started")
}

fun main() = runBlocking {
    loadAll()
    println("all loaded")
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: started, feed, profile, all loaded. coroutineScope возвращается только после завершения всех дочерних корутин.

Что выведет

started
feed
profile
all loaded

Разбор

coroutineScope возвращается только после завершения всех дочерних корутин. Тело печатает started и заканчивается, но функция ждёт детей: feed через 100 мс, profile через 200 мс. Только потом выполняется all loaded.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.