Bem-vindos
“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 tipoFuture
é 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.
Agenda
Including 10 minute breaks, this session should take about 3 hours and 20 minutes. It contains:
Segment | Duration |
---|---|
Fundamentos de Async (Assincronicidade) | 30 minutes |
Canais e Controle de Fluxo | 20 minutes |
Armadilhas | 55 minutes |
Exercícios | 1 hour and 10 minutes |