Задачи на корутины в Kotlin. Часть 2
Создайте корутину с обработкой исключений с помощью CoroutineExceptionHandler, которая выбрасывает исключение и корректно его обрабатывает.
Реализуйте параллельную обработку списка из 10 элементов с помощью async, где каждый элемент обрабатывается с задержкой 100 мс.
Создайте корутину с использованием SupervisorJob, где одна из дочерних корутин падает с исключением, но другие продолжают работу.
Реализуйте таймаут для корутины с помощью withTimeout на 2 секунды и обработайте исключение TimeoutCancellationException.
Создайте цепочку из 3 асинхронных корутин, где каждая последующая зависит от результата предыдущей.
Реализуйте конкурентный доступ к общему ресурсу с помощью Mutex для безопасного увеличения счетчика из нескольких корутин.
Используйте select для ожидания результата от первой завершившейся корутины из двух, работающих разное время.
Создайте корутину, которая использует channel для отправки и получения данных между двумя корутинами.
Реализуйте отмену всех корутин в области видимости при ошибке в любой из них с помощью coroutineScope.
Создайте корутину, которая переключается между разными диспетчерами (IO, Default, Main) для выполнения различных этапов работы.