Sobes.tech
Junior — Middle

Qual fluxo usa async/await ao chamá-lo dentro de um método iniciado com Task?

sobes.tech IA

Resposta da IA

Ao usar async/await dentro de um método iniciado com Task no iOS (por exemplo, usando Swift Concurrency), a execução do código assíncrono ocorre num contexto gerido pelo agendador de tarefas (Task Scheduler).

O próprio async/await não vincula o código a um thread específico. Em vez disso, ao aguardar (await), o thread atual pode ser liberado para outras tarefas, e a continuação do método após o await pode ser executada em qualquer thread disponível do pool de threads ou no mesmo thread, se possível.

Assim, o thread em que o código após o await é executado não é garantido e depende do agendador. Isto permite usar os recursos de forma eficiente e não bloquear o thread principal (por exemplo, o thread de UI).

Exemplo:

Task {
    print("Início no thread: \(Thread.current)")
    await someAsyncFunction()
    print("Continuação no thread: \(Thread.current)")
}

A saída pode mostrar threads diferentes antes e depois do await.