Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Async se faz - um pouco de como async funciona ...
Search
Consoli
November 05, 2022
Programming
77
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
Jetpack Compose Mechanisms
skydoves
3
820
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
630
phperだってパンチカードでコーディングしたい
o0h
PRO
0
340
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.7k
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
ActionController meets Protocol Buffers
sorah
0
550
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
650
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
620
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
カツオ、ご期待ください
suneo3476
0
190
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
160
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
A Modern Web Designer's Workflow
chriscoyier
699
190k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Odyssey Design
rkendrick25
PRO
2
870
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Skip the Path - Find Your Career Trail
mkilby
1
260
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
370
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
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