
【Rust】Tokio の Task を複数実行するとき、バッファリングした Stream でコンパクトにまとめる
DRANK
Rust で実行数を制限しながら複数のファイルを同時にダウンロードしたくなりました。最初は「非同期処理と Channel でどうにかなるかな」と軽く考えていましたが、.await を複数配置することになったりと複雑になりがちです。そこで試行錯誤してみたところ Stream(のアダプター)を使うとコンパクトにまとめることができたので、今回はその辺についての記事です。この記事で使っている「並行」「並列」などのワードについては Tokio のチュートリアル日本語訳を参考にしています。「Chapter 04 Spawning / 並行性」より引用並行(concurrency)と並列(parallelism)は同じものではありません。もしあなたが、2つのタスクを交互に行うのなら、それはそれらのタスクを「並行して」こなしているということになりますが、「並列」ではありません。これを「並列」にしたいのであれば、2人の人間が必要で、それぞれのタスクにそれぞれの人間を専任させることになるでしょう。 ランタイムと各種ユーティリティーRust では非同期処理のランタイムや関連するユーティリティーは各種 Crate を組み合わせる必要があります。以下は今回利用している Crate についてです。ランタイムは表…
1 comments
へー、buffered使って並列処理のためのキューのような使い方もできるんだ。
【Rust】Tokio の Task を複数実行するとき、バッファリングした Stream でコンパクトにまとめる
zenn.dev/hankei6km/arti…