ようこそ

「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:

SegmentDuration
Asyncの基礎30 minutes
チャネルと制御フロー20 minutes
落とし穴55 minutes
練習問題1 hour and 10 minutes