スレッド
Rustはspawn関数を用いてOSのネイティブスレッドを開始することができます。この関数の引数はmoveクロージャ(訳注: 参照ではなく値を取るクロージャ)です。
use std::thread;
const NTHREADS: u32 = 10;
// この関数は`main`スレッドで実行されます。
fn main() {
// spawnされるクロージャを保持するためのベクタ
let mut children = vec![];
for i in 0..NTHREADS {
// 新しいスレッドを起動。
children.push(thread::spawn(move || {
println!("this is thread number {}", i);
}));
}
for child in children {
// 子スレッドが終了するのを待ち、結果を返します。
let _ = child.join();
}
}
これらのスレッドのスケジューリングはOSによって行われます。