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.