ようこそ
「Async」は複数のタスクが並行処理される並行性モデルです。それぞれのタスクはブロックされるまで実行され、そして次に進むことのできる他のタスクに切り替えることにより実現されます。このモデルは限られた数のスレッド上でより多くのタスクを実行することを可能にします。なぜなら、タスクごとのオーバーヘッドは通常はとても低く、効率的に実行可能なI/Oを特定するために必要なプリミティブをOSが提供してくれるからです。
Rustの非同期的な操作は「future」に基づいていて、これは将来に完了するかもしれない作業を表しています。Futureは、タスクが完了したことを知らせるシグナルが得られるまでポーリングされます。
Futureは非同期的なランタイムによりポーリングされます。ランタイムにはいくつかの選択肢があります。
他の言語との比較
-
Pythonには似たようなモデルが
asyncio
として搭載されています。しかし、ここでのFuture
型はコールバックに基づくものであって、ポーリングによるものではありません。Pythonの非同期プログラムは「ループ」を必要とし、Rustのランタイムに似ています。 -
JavaScriptの
Promise
は似ているものの、これもまたもやコールバックに基づきます。 この言語のランタイムはイベントループにより実装されているため、多くのPromise解決の詳細は隠されています。
スケジュール
Including 10 minute breaks, this session should take about 3 hours and 20 minutes. It contains:
Segment | Duration |
---|---|
Asyncの基礎 | 30 minutes |
チャネルと制御フロー | 20 minutes |
落とし穴 | 55 minutes |
練習問題 | 1 hour and 10 minutes |