home.social

#suspend_fun — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #suspend_fun, aggregated by home.social.

fetched live
  1. Шпаргалка: Structured Concurrency и отмена корутин

    Тема 1. Как выглядит Kotlin Coroutine без макияжа Тема 2. Kotlin suspend функции Тема 3. Kotlin Coroutine диспетчеры и потоки: где выполняются корутины? Что будет, если запустить тяжелую фоновую обработку данных, а пользователь закроет экран? Если мы не контролируем этот процесс, потоки продолжат работу, сжигая батарею, процессорное время и создавая утечки памяти. Для решения этой проблемы в Kotlin применяется концепция Structured Concurrency . Больше букав

    habr.com/ru/articles/1068314/

    #kotlin_coroutines #structured_concurrency #suspend_fun #job #CoroutineScope #CancellationException

  2. Шпаргалка: 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. Доступны следующие диспетчеры:

    habr.com/ru/articles/971126/

    #kotlin_coroutines #kotlin #dispatchers #suspend_fun