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
67
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
Other Decks in Programming
See All in Programming
Creating Composable Callables in Contemporary C++
rollbear
0
180
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
280
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
270
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
Oxcを導入して開発体験が向上した話
yug1224
4
360
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
450
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
150
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
Featured
See All Featured
Visualization
eitanlees
152
17k
エンジニアに許された特別な時間の終わり
watany
107
250k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
250
Chasing Engaging Ingredients in Design
codingconduct
0
230
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
30 Presentation Tips
portentint
PRO
1
330
Ruling the World: When Life Gets Gamed
codingconduct
0
270
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
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