Структурированная конкурентность — это основной принцип в Kotlin coroutines, который обеспечивает иерархию родитель-потомок, гарантируя предсказуемый жизненный цикл корутин и предотвращая утечки ресурсов.
Корутины запускаются в coroutine scope, который определяет границы иерархии:
coroutineScope {
launch { doTaskA() } // потомок 1
launch { doTaskB() } // потомок 2
} // родитель ждёт здесь, пока оба потомка завершатся
Отмена распространяется вниз автоматически:
val parent = launch {
launch { delay(1000) } // отменяется, если отменяется родитель
}
parent.cancel() // и родитель, и потомок отменяются
Структурированная конкурентность делает асинхронный код безопаснее и проще в поддержке, привязывая жизненный цикл корутин к чётко определённому scope. Три основы:
В структурированной конкурентности родительская coroutine должна дождаться завершения всех дочерних coroutine, прежде чем родительская coroutine завершит выполнение.
Новый — ещё не проверен сообществом
Вы