Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Async se faz - um pouco de como async funciona ...
Search
Consoli
November 05, 2022
Programming
0
64
Async se faz - um pouco de como async funciona em rust
Slides da apresentação feita no meetup rust-sp, dia 05/11/22
Consoli
November 05, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
CSC307 Lecture 10
javiergs
PRO
1
660
AtCoder Conference 2025
shindannin
0
1.1k
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
180
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
140
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
220
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
730
CSC307 Lecture 01
javiergs
PRO
0
690
Featured
See All Featured
Designing for Performance
lara
610
70k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Docker and Python
trallard
47
3.7k
How to make the Groovebox
asonas
2
1.9k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
The SEO identity crisis: Don't let AI make you average
varn
0
330
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
190
Transcript
ASYNC SE FAZ OU "COMO ASYNC FUNCIONA EM RUST?" Matheus
Consoli @mconsoli
boa, vamo começar
EXEMPLO MOTIVADOR - ler um feed online - processar os
dados recebidos - salvar os dados no banco - publicar os dados em um tópico
v1 SYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v1 SYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos uns 9 segundos
v2 ASYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v2 ASYNC mas agora é tudo async! - get_contents demora
2 segundos - process é super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v2 ASYNC mas agora é tudo async! - get_contents demora
2 segundos - process é super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v2 ASYNC mas agora é tudo async! - get_contents demora
2 segundos - process é super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v2 ASYNC mas agora é tudo async! - get_contents demora
2 segundos - process é super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos uns 9 segundos
v2 ASYNC mas agora é tudo async! - get_contents demora
2 segundos - process é super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos ? ? ? uns 9 segundos
SAIR COLOCANDO async/.await NÃO RESOLVE O PROBLEMA
& ASYNC NÃO É SOBRE PERFORMANCE
ASYNC É SOBRE CONTROLE SOBRE EXECUÇÃO
ASYNC PERMITE A INTERAÇÃO COM A COMPUTAÇÃO
SYNC ASYNC
SYNC ASYNC foo() => output
SYNC ASYNC foo() => output foo() => computação => output
SYNC ASYNC foo() => output foo() => computação => output
SYNC ASYNC foo() => computação => output foo() => output
RESUMABLE COMPUTATION
None
o tipo do resultado dessa computação
"tente fazer de progresso nessa computação"
a computação foi concluída ou foi pausada? Poll::Ready(_) Poll::Pending
"usa isso aqui pra informar quando vc puder continuar"
"eu não vou sair do lugar, prometo"
None
None
None
FUTURES SÃO LAZY
ELAS NÃO REPRESENTAM A COMPUTAÇÃO, ELAS SÃO A COMPUTAÇÃO
PRA FUTURE FAZER PROGRESSO, poll PRECISA SER CHAMADO
EXECUTORS
MODELO AGNÓSTICO
MODELO AGNÓSTICO RUST FORNECE AS APIs
MODELO AGNÓSTICO RUST FORNECE AS APIs COMUNIDADE IMPLEMENTA OS RUNTIMES
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
em progresso esperando evento esperando para fazer progresso
MAS COMO O EXECUTOR SABE QUE PODE PROGREDIR COM UMA
FUTURE?
"usa isso aqui pra informar quando vc puder continuar"
a Waker is just a very fancy callback
a Waker is just a very fancy callback
DE VOLTA PRO NOSSO PROBLEMA
v2 ASYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos
v2.1 ASYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos mas agora a gente consegue fazer progresso concorrentemente
v2.1 ASYNC - get_contents demora 2 segundos - process é
super rápido! - save_on_db demora 3 segundos - publish_on_topic leva 4 segundos mas agora a gente consegue fazer progresso concorrentemente uns 6 segundos
E O TAL DO PIN?
A TALK INSIDE A TALK SURPRISE
(MICRO) NIGHT'S WATCH: Generators
STACKLESS COROUTINES
RESUMABLE FUNCTIONS
VERY NIGHTLY
VERY NIGHTLY yield suspende a execução atual
VERY NIGHTLY resume faz voltar de onde parou
VERY NIGHTLY nada vai sair do lugar
None
e acho que é isso… PERGUNTAS? Matheus Consoli in/matheus-consoli @mconsoli