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
CSC307 Lecture 05
javiergs
PRO
0
500
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
460
AI巻き込み型コードレビューのススメ
nealle
2
1.3k
dchart: charts from deck markup
ajstarks
3
1k
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
150
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
100
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
A Soul's Torment
seathinner
5
2.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
How to make the Groovebox
asonas
2
1.9k
Speed Design
sergeychernyshev
33
1.5k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Believing is Seeing
oripsolob
1
58
Six Lessons from altMBA
skipperchong
29
4.2k
Designing for Performance
lara
610
70k
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