Middle
Quais mecanismos são usados para transferência de controlo entre corrotinas na programação assíncrona?
sobes.tech IA
Resposta da IA
Na programação assíncrona no Android usando coroutines, a gestão entre elas é feita através do mecanismo de pontos de suspensão. As coroutines podem suspender a sua execução em certos pontos (por exemplo, ao chamar delay(), withContext() ou ao aguardar o resultado de uma operação assíncrona), libertando a thread para outras tarefas.
Os mecanismos principais de transferência de controlo:
- Funções suspensas — funções que podem suspender a execução de uma coroutine sem bloquear a thread.
- Dispatcher — determina em qual thread ou pool de threads a coroutine será executada.
- Continuação — objeto que guarda o estado da coroutine e permite retomá-la.
Exemplo:
suspend fun fetchData() {
val data = withContext(Dispatchers.IO) {
// Executar uma operação longa em background
loadFromNetwork()
}
// Voltar ao thread principal para atualizar a UI
updateUI(data)
}
Aqui, o controlo passa entre coroutines e threads através de pontos de suspensão e despachantes.