Rust Async

“Async” Ă© um modelo de concorrĂȘncia onde vĂĄrias tarefas sĂŁo executadas concorrentemente, executando cada tarefa atĂ© que ela bloqueie, e entĂŁo mudando para outra tarefa que estĂĄ pronta para fazer progresso. O modelo permite executar um nĂșmero maior de tarefas em um nĂșmero limitado de threads. Isso ocorre porque o custo por tarefa Ă© tipicamente muito baixo e os sistemas operacionais fornecem primitivas para identificar eficientemente I/O que Ă© capaz de prosseguir.

A operação assĂ­ncrona do Rust Ă© baseada em “futures”, que representam trabalho que pode ser concluĂ­do no futuro. As futures sĂŁo “polled” atĂ© que elas sinalizem que estĂŁo completas.

As futures sĂŁo polled por um runtime assĂ­ncrono, e vĂĄrios runtimes diferentes estĂŁo disponĂ­veis.

ComparaçÔes

  • O Python tem um modelo semelhante em seu asyncio. No entanto, seu tipo Future Ă© baseado em callback, e nĂŁo polled. Programas async em Python requerem um “loop”, semelhante a um runtime em Rust.

  • O Promise do JavaScript Ă© semelhante, mas novamente baseado em callback. O runtime da linguagem implementa o event loop, entĂŁo muitos dos detalhes da resolução de Promise sĂŁo ocultos.