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の技術発表資料です
September 30, 2022
Programming
0
130
Rustは厳しいが役に立つ Part2「Rustで非同期処理!!(概要)」
NearMeの技術発表資料です
September 30, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
GTFSのデータを Streamlitで可視化してみた
nearme_tech
0
34
Offset / Cursor Paginationについて
nearme_tech
1
24
⼤規模⾔語モデルの拡張(RAG)が 終わったかも知れない件について
nearme_tech
23
15k
VRPを深層強化学習で解く
nearme_tech
0
64
Let’s go monorepo - intro to Nx.dev
nearme_tech
0
18
Dynamic Vehicle Routing のシミュレーションを Streamlitで作ってみた
nearme_tech
0
62
ログ監視ツールについて調べてみた
nearme_tech
0
55
(インターン生が大学院で行なっている)研究紹介
nearme_tech
0
47
拡散モデルの概要 −§2. スコアベースモデルについて−
nearme_tech
0
61
Other Decks in Programming
See All in Programming
Code Reviews
bkuhlmann
4
890
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
220
Tailwind CSSを本気でカスタマイズする方法
fsubal
13
5.2k
Goのエラースタックトレースの歴史と今後
sonatard
7
1.2k
Ruby GitHub Packages
bkuhlmann
0
630
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
260
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
920
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
230
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
240
Ruby Pattern Matching
bkuhlmann
0
930
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
SIMD Parallel Programming with the Vector API
josepaumard
0
150
Featured
See All Featured
Designing Experiences People Love
moore
136
23k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Building Your Own Lightsaber
phodgson
99
5.7k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Teambox: Starting and Learning
jrom
128
8.4k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Become a Pro
speakerdeck
PRO
11
4.5k
GitHub's CSS Performance
jonrohan
1025
450k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Writing Fast Ruby
sferik
621
60k
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