Ответ
Structured concurrency — это подход к управлению потоками/корутинами, где их жизненные циклы строго вложены в родительскую область. Основные принципы:
- Иерархия — дочерние корутины завершаются до завершения родительской.
- Отмена — отмена родителя автоматически отменяет всех потомков.
- Обработка ошибок — исключение в дочерней корутине отменяет родителя и остальных потомков.
Пример с Kotlin корутинами:
scope.launch { // родитель
launch { // дочерняя 1
delay(1000)
println("Child 1 done")
}
launch { // дочерняя 2
delay(500)
throw Exception("Oops!")
}
}
// При ошибке в child 2, child 1 автоматически отменится
Преимущества: предсказуемость, отсутствие утечек, упрощение отладки.