tokio

rust-lang のデファクト非同期ランタイム。I/O駆動のタスクスケジューリングを提供する。

主要機能

  • spawn: tokio::spawn(async move { ... }) でタスクを生成し、JoinHandle.await で待つ。
  • チャネル: mpsc(MPSC = multi-producer single-consumer)、broadcast(multi-producer multi-consumer)、watch(single-producer multi-consumer)。メッセージパッシングは inter-process-communication の系列。
  • Stream: stream::unfold などで非同期イテレーションを扱う。
  • Mutex: tokio::sync::Mutex.await 境界を跨げるが重い。std::sync::Mutex のガードを .await 越しに保持すると Send 制約で弾かれる(parking_lot も選択肢)。

関連

  • 非同期の言語仕様(Future/Pin)は rust-ownership-model と Rust async を参照。
  • イベントループの源流として、Node.js の libuv(Node.js のために作られたイベントループライブラリ)がある。
  • gRPC サーバ実装などネットワークアプリの土台になる。

関連: _moc-systems / rust-lang