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
63
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
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
150
JETLS.jl ─ A New Language Server for Julia
abap34
2
470
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
160
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.9k
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
310
CSC307 Lecture 02
javiergs
PRO
1
740
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
430
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
300
Implementation Patterns
denyspoltorak
0
140
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
500
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Building Applications with DynamoDB
mza
96
6.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
58
41k
From π to Pie charts
rasagy
0
100
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
39
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
Building AI with AI
inesmontani
PRO
1
610
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
58
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
110
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