Корутина — лёгкая функция, которую можно приостанавливать и возобновлять; она реализует кооперативную многозадачность Таск (Task) — абстракция работы, способной выполняться асинхронно; для этого он часто использует…
Область: Kotlin Flow и многопоточная обработка данных stateIn преобразует обычный Flow в StateFlow, который всегда хранит последнее значение управляет потоковым состоянием и поддерживает хранение последнего состояния…
Как устроена suspend-функция в Kotlin под капотом: стейт-машина? Kotlin coroutines позволяют создавать асинхронный код без блокировки потоков при компиляции suspend-функция превращается в стейт-машину с набором…
Риски Dispatchers.Unconfined и сценарий падения Dispatchers.Unconfined — специальный диспетчер корутин, который начинает выполнение в текущем потоке и работает в нём до первой приостановки. Сразу другой поток он не…
корутина — легковесная единица выполнения, которой управляет CoroutineScope запуск с помощью launch — возвращает Job и подходит для задач, которым не нужен результат запуск посредством async — возвращает Deferred и…
Что будет с корутиной в GlobalScope после cancel() родительского скоупа? Корутинa в GlobalScope — выполняется вне иерархии скоупов GlobalScope не зависит от родительских скоупов Вызов cancel() у родителя не оказывает…
Почему GlobalScope не стоит использовать в большинстве случаев? Kotlin coroutines, GlobalScope — глобальная область видимости Жизненный цикл — весь период работы приложения Нет контроля над отменой и обработкой ошибок…
Контекст: управление отменой в Kotlin Coroutines Когда родительская корутина отменяется, все её дочерние корутины также автоматически переходят в состояние отмены Причина заключается в устройстве иерархии Job: именно…
Что представляют собой корутины в Kotlin? Возможность Kotlin для реализации асинхронности и конкурентности Легковесные задачи, выполняющиеся внутри потоков JVM Позволяют приостанавливать и возобновлять функции…
Корутины представляют собой лёгковесные функции, предназначенные для кооперативной многозадачности Они умеют приостанавливать выполнение и затем возобновлять его Такая возможность реализуется на уровне языка…