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
Rustは厳しいが役に立つ Part2「Rustで非同期処理!!(概要)」
Search
NearMeの技術発表資料です
PRO
September 30, 2022
Programming
0
200
Rustは厳しいが役に立つ Part2「Rustで非同期処理!!(概要)」
NearMeの技術発表資料です
PRO
September 30, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
並列で⽣成AIにコーディングをやらせる
nearme_tech
PRO
1
49
希望休勤務を考慮したシフト作成
nearme_tech
PRO
0
21
Hub Labeling による高速経路探索
nearme_tech
PRO
0
63
Build an AI agent with Mastra
nearme_tech
PRO
0
69
Rustで強化学習アルゴリズムを実装する vol3
nearme_tech
PRO
0
36
Webアプリケーションにおけるクラスの設計再入門
nearme_tech
PRO
1
80
AIエージェント for 予約フォーム
nearme_tech
PRO
2
150
ULID生成速度を40倍にしたった
nearme_tech
PRO
2
55
Amazon AuroraとMongoDBの アーキテクチャを比較してみたら 結構違った件について
nearme_tech
PRO
0
28
Other Decks in Programming
See All in Programming
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
810
Team operations that are not burdened by SRE
kazatohiei
1
310
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
150
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
170
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
770
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
140
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.1k
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
640
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
1
18k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
950
Writing Fast Ruby
sferik
628
62k
Into the Great Unknown - MozCon
thekraken
40
1.9k
The Cult of Friendly URLs
andyhume
79
6.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Done Done
chrislema
184
16k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Why Our Code Smells
bkeepers
PRO
336
57k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Transcript
0 Rustは厳しいが役に立つ Part2「Rustで非同期処理!!(概要)」 2022-08-05 第9回NearMe技術勉強会 Kaito Asahi
1 目次 非同期とは? 非同期について軽くまとめています 非同期処理を実現する”Tokio” Tokioというcrateを用いたコードの例
2 非同期(Asynchronous)とは? MDNからの引用では... https://developer.mozilla.org/ja/docs/Glossary/Asynchronous 非同期とは、2つ以上の事象が同時に発生したり、関連する複 数の事象が互いの完了を待たずに発生したりする概念を指し ます (前のものが完了するのを待たずに複数の関連するもの が発生することもあります)。 “
” → 日本語の通り、待たないで実行することができる!
3 非同期処理(ConcurrencyとParallelism) “プロセス”は、「実行前状態」→「計算途中状態」→「終了状態」と表すことにする (ただし、ここでは”プロセス”を”OSのプロセス”そのものではなく、抽象的な概念として言及する。 実際、Rustの非同期処理の”プロセス”では一般に”グリーンスレッド”が利用される) 1. Concurrency(並行処理) → 複数の”プロセス”を「計算途中状態」にするような処理。 →
ただし、ある時間 t では1つの”プロセス”しか実行されない(シングルタスク)。 → 同じ処理をループでおこなうときは、初めに実行された物から出力されることが一般的。 https://www.oreilly.co.jp/book s/9784873119595/ 参考:
4 非同期処理(ConcurrencyとParallelism) 2. Parallelism(並列処理) → 複数の”プロセス”を「計算途中状態」にし、さらに同時に実行状態にすることができる処理。 → ゆえに、ループ処理では順不同で結果が出力されることがある。
5 Rustで非同期処理に便利なcrate 〜Tokio〜 Tokio is an asynchronous runtime for the
Rust programming language. It provides the building blocks needed for writing networking applications. https://tokio.rs/ → TokioはRustの非同期処理ランタイムの一つで、ネットワークアプリケーションの構築を助けてくれ る! “ ”
6 Rustで非同期処理に便利なcrate 〜Tokio〜 Ex) 1から10までの数字を表示する並行処理 use futures::future; async fn print_number(i:
i32) { println!("{}", i); } #[tokio::main] async fn main() { let fn_objs = (1..(10+1)).map(|i| print_number(i) ); future::join_all(fn_objs).await; } 1 2 3 4 5 6 7 8 9 10 出力
7 Rustで非同期処理に便利なcrate 〜Tokio〜 Ex) 1から10までの数字を表示する並列処理 use futures::future; async fn print_number(i:
i32) { println!("{}", i); } #[tokio::main] async fn main() { let fn_objs = (1..(10+1)).map(|i| tokio::spawn(async move { print_number(i).await }) ); future::join_all(fn_objs).await; } 5 1 4 2 3 6 7 8 9 10 出力
8 Thank you