Junior — Middle
Em que lugar o estado é guardado ao alternar entre funções suspendidas em Kotlin?
sobes.tech IA
Resposta da IA
O estado ao passar entre funções suspend em Kotlin é guardado num estado de coroutine, que o compilador transforma numa máquina de estados. Este mecanismo interno armazena todas as variáveis locais e o ponto de retoma numa classe gerada.
Assim, ao suspender e retomar a coroutine, o controlo e os dados são restaurados a partir deste objeto, permitindo continuar a execução de onde foi interrompida.
Isto parece aproximadamente assim (de forma simplificada):
suspend fun exemplo() {
val a = 1
suspendFunction() // aqui a coroutine pode suspender-se
println(a) // após retomar, o valor de a é preservado
}
O compilador cria uma classe que armazena a variável a e a posição no código para retomar a execução.