Rust на примерах

18.1 Потоки

В Rust имеется механизм для запуска потоков ОС посредством функции scoped, которая принимает перемещающее окружение замыкания в качестве аргумента.

use std::thread;

static NTHREADS: i32 = 10;

// Это основной поток `main`
fn main() {
    // Создадим вектор, в котором будет хранить созданные потоки.
    let mut children = vec![];

    for i in 0..NTHREADS {
        // Запустить ещё один поток
        children.push(thread::spawn(move || {
            println!("Это поток под номером  {}", i)
        }));
    }

    for child in children {
        // Ждём завершения работы потока. Возвращаем результат.
        let _ = child.join();
    }
}

Эти потоки управляются ОС.