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
160
Rustは厳しいが役に立つ Part2「Rustで非同期処理!!(概要)」
NearMeの技術発表資料です
PRO
September 30, 2022
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
観察研究における因果推論
nearme_tech
PRO
1
15
React
nearme_tech
PRO
2
18
Architecture Decision Record (ADR)
nearme_tech
PRO
1
760
遺伝的アルゴリズムを実装する
nearme_tech
PRO
1
25
Fractional Derivative!
nearme_tech
PRO
1
21
GitHub Projectsにおける チケットの ステータス更新自動化について
nearme_tech
PRO
1
35
2つの曲線を比較する方法ってあるの? 〜フレシェ距離を試してみた〜 with Python
nearme_tech
PRO
1
150
Constrained K-means Clustering (クラスタサイズの制限をしたK-means法) を調べてみた
nearme_tech
PRO
1
66
VRPの近傍操作SWAP*について調べてみた
nearme_tech
PRO
1
81
Other Decks in Programming
See All in Programming
tsconfig.jsonの最近の新機能 ファイルパス編
uhyo
6
1.6k
AWS認定資格を受験するにあたり、気づいたこと・実践していたことのまとめ
satoshi256kbyte
1
120
4年間変わらなかった YOUTRUSTのアーキテクチャ
daiki1003
1
500
DevFest Android in Korea 2024 - 안드로이드의 문단속 : 앱을 지키는 암호화 이야기
mdb1217
1
140
(Deep|Web) Link support with expo-router
mrtry
0
170
pytest プラグインを開発して DRY に自動テストを書こう
inuatsu
2
250
色んなオートローダーを覗き見る #phpcon_okinawa
o0h
PRO
5
380
DjangoNinjaで高速なAPI開発を実現する
masaya00
0
500
RDBの世界をぬりかえていくモデルグラフDB〜truncus graphによるモデルファースト開発〜
jurabi
0
170
M5Stackボードの選び方
tanakamasayuki
0
210
Vue :: Better Testing 2024
up1
1
390
Pythonによるイベントソーシングへの挑戦と現状に対する考察 / Challenging Event Sourcing with Python and Reflections on the Current State
nrslib
3
1.2k
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
279
34k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Why You Should Never Use an ORM
jnunemaker
PRO
53
9k
In The Pink: A Labor of Love
frogandcode
139
22k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
92
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
25
660
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Building Your Own Lightsaber
phodgson
102
6k
Visualization
eitanlees
143
15k
Debugging Ruby Performance
tmm1
73
12k
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