スレッド - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# スレッド

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によって行われます。