Проверяет понимание иерархии корутин и методов изоляции отмены.
По умолчанию корутины иерархичны: при отмене родительского Job автоматически отменяются все дочерние. Чтобы дочерняя корутина продолжила работу независимо, её надо запускать в новом CoroutineScope или использовать supervisorScope/SupervisorJob, который не распространяет отмену на сверстников.
1. Иерархия по умолчанию
launch внутри launch → дочерняя корутина наследует отмену
2. SupervisorJob
CoroutineScope(SupervisorJob())
Ошибка в одном child не отменяет других
3. supervisorScope
supervisorScope {
launch { /* child1 */ }
launch { /* child2 */ }
}4. Новый Scope
GlobalScope.launch { … } или собственный CoroutineScope
Когда использовать:
Для параллельных задач, где ошибка одной не должна убить все