Вот простой код, который вы можете запустить, чтобы уточнить ваше понимание:
fun main() {
GlobalScope.launch {
println(this)
println(GlobalScope)
}
Thread.sleep(100)
}
Он напечатает
StandaloneCoroutine{Active}@b4642b3
kotlinx.coroutines.GlobalScope@72445c73
, который должен дать вам понять, что вы запускаете сопрограмму это не та область, которая является приемником вашего блока компоновщика сопрограмм. Область, которую вы получаете, была создана функцией launch
, которая заполнила ее именем и всем остальным, что вы видите.
Более волшебная часть этого механизма в том, что coroutineContext
не просто доступен внутри launch
, но в любом suspend fun
, как глобальное свойство. Он оценивает тот же контекст, который вы видите в блоке launch
.