KOTLIN_LIB Telegram 522
🧵 Kotlin Coroutines без макияжа: что скрывается под капотом

Когда вы запускаете корутину с помощью launch или async, компилятор Kotlin создаёт специальный объект, реализующий интерфейс Continuation. Этот объект содержит состояние выполнения корутины и позволяет ей приостанавливаться и возобновляться. Внутри него хранятся все локальные переменные и текущая точка выполнения.

🔄 Жизненный цикл корутины:
1. Создание — с помощью launch или async.
2. Запуск — автоматически или через start().
3. Приостановка — при вызове suspend -функций, таких как delay() или await().
4. Возобновление — после завершения асинхронной операции.
5. Завершение — когда весь код выполнен или корутина отменена.

🧠 Что такое Continuation?

Continuation — это объект, представляющий состояние выполнения корутины. Он позволяет приостанавливать и возобновлять выполнение, сохраняя информацию о том, где именно корутина была приостановлена. Интерфейс Continuation выглядит следующим образом:


interface Continuation<in T> {
val context: CoroutineContext
fun resumeWith(result: Result<T>)
}


📌 Пример:


suspend fun mySuspendFunction() {
println("Start")
delay(1000)
println("End")
}

launch {
mySuspendFunction()
}


Компилятор преобразует этот код в класс, который можно представить следующим образом:


class GeneratedContinuation extends SuspendLambda {
int label;

@Override
Object invokeSuspend(Object result) {
switch (label) {
case 0:
println("Start");
label = 1;
if (delay(1000, this) == COROUTINE_SUSPENDED)
return COROUTINE_SUSPENDED;
case 1:
println("End");
return Unit.INSTANCE;
}
throw new IllegalStateException();
}
}


Здесь label указывает на текущую точку выполнения внутри корутины. При каждом вызове suspend -функции значение label изменяется, чтобы указать, с какого места нужно продолжить выполнение после приостановки.

https://habr.com/ru/articles/882988/

✍️ @kotlin_lib
👍5



tgoop.com/kotlin_lib/522
Create:
Last Update:

🧵 Kotlin Coroutines без макияжа: что скрывается под капотом

Когда вы запускаете корутину с помощью launch или async, компилятор Kotlin создаёт специальный объект, реализующий интерфейс Continuation. Этот объект содержит состояние выполнения корутины и позволяет ей приостанавливаться и возобновляться. Внутри него хранятся все локальные переменные и текущая точка выполнения.

🔄 Жизненный цикл корутины:
1. Создание — с помощью launch или async.
2. Запуск — автоматически или через start().
3. Приостановка — при вызове suspend -функций, таких как delay() или await().
4. Возобновление — после завершения асинхронной операции.
5. Завершение — когда весь код выполнен или корутина отменена.

🧠 Что такое Continuation?

Continuation — это объект, представляющий состояние выполнения корутины. Он позволяет приостанавливать и возобновлять выполнение, сохраняя информацию о том, где именно корутина была приостановлена. Интерфейс Continuation выглядит следующим образом:


interface Continuation<in T> {
val context: CoroutineContext
fun resumeWith(result: Result<T>)
}


📌 Пример:


suspend fun mySuspendFunction() {
println("Start")
delay(1000)
println("End")
}

launch {
mySuspendFunction()
}


Компилятор преобразует этот код в класс, который можно представить следующим образом:


class GeneratedContinuation extends SuspendLambda {
int label;

@Override
Object invokeSuspend(Object result) {
switch (label) {
case 0:
println("Start");
label = 1;
if (delay(1000, this) == COROUTINE_SUSPENDED)
return COROUTINE_SUSPENDED;
case 1:
println("End");
return Unit.INSTANCE;
}
throw new IllegalStateException();
}
}


Здесь label указывает на текущую точку выполнения внутри корутины. При каждом вызове suspend -функции значение label изменяется, чтобы указать, с какого места нужно продолжить выполнение после приостановки.

https://habr.com/ru/articles/882988/

✍️ @kotlin_lib

BY Kotlin


Share with your friend now:
tgoop.com/kotlin_lib/522

View MORE
Open in Telegram


Telegram News

Date: |

Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. How to Create a Private or Public Channel on Telegram?
from us


Telegram Kotlin
FROM American