Шпаргалка: Kotlin Coroutine диспетчеры и потоки: где выполняются корутины?
newsare.net
Тема 1. Как выглядит Kotlin Coroutine без макияжаТема 2. Kotlin suspend функцииКод Kotlin корутин выполняется в потоках, но важно понимать, что корутины не прШпаргалка: Kotlin Coroutine диспетчеры и потоки: где выполняются корутины?
Тема 1. Как выглядит Kotlin Coroutine без макияжаТема 2. Kotlin suspend функцииКод Kotlin корутин выполняется в потоках, но важно понимать, что корутины не привязаны жестко к конкретным потокам. Их выполнение управляется диспетчерами (Dispatchers), которые определяют, в каком потоке или пуле потоков будет работать корутина.Как мы обсуждали в Как выглядит Kotlin Coroutine без макияжа при создании корутины создается объект Continuation, в котором содержится код, который выполняет корутина. Код делится на блоки - suspend-функции с помощью switch. Когда код доходит до suspend-функции она вызывается и в неё передается весь текущий объект Continuation и на этом это ответвление switch заканчивается. Suspend-функция по завершению своей работы вызывает метод resume у переданного ей объекта Continuation и таким образом начинается выполнение следующего ответвления switch'a. Мы всё это вспомнили не просто так: объект Continuation, который мы обсуждаем на всех этапах передается в специальной обёртке DispatchedContinuation.Именно на этой обертке и вызывается метод resume, который выделяет поток и вызывает resume у объекта Continuation.Исходя из изложенного выше мы можем понять механизм смены потока - он может меняться при каждом вызове метода resume у объекта DispatchedContinuation.Доступны следующие диспетчеры: Читать далее Read more












