Задачи на корутины в Kotlin. Часть 9
Сравните coroutineScope и supervisorScope при падении одной дочерней корутины.
Создайте SupervisorJob и запустите несколько дочерних корутин.
Используйте coroutineScope для параллельных suspend-операций с общим завершением.
Сделайте функцию suspend с withContext(NonCancellable) для записи лога при отмене.
Создайте собственный CoroutineScope с SupervisorJob + Dispatchers.IO.
Используйте currentCoroutineContext() для получения текущего контекста.
Сделайте structured concurrency: три параллельных задачи в одном coroutineScope.
Обработайте ошибку в одной из дочерних корутин в supervisorScope.
Создайте scope и отмените его через scope.cancel().
Сравните GlobalScope и локальный CoroutineScope (объясните, почему GlobalScope не рекомендуется).