Sobes.tech
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.