Введение
В этом лабораторном задании у нас есть фрагмент кода на Rust, который демонстрирует, как создавать нативные потоки операционной системы с использованием функции spawn и перемещающейся замыкания. Код создает вектор для хранения созданных потоков, перебирает диапазон чисел для создания нескольких потоков и выводит сообщение, идентифицирующее номер каждого потока. Наконец, главный поток ожидает завершения каждого созданного потока с использованием функции join.
Примечание: Если лабораторная работа не уточняет имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать
main.rs, скомпилировать и запустить его с помощьюrustc main.rs &&./main.
Потоки
Rust предоставляет механизм для создания нативных потоков операционной системы с помощью функции spawn, аргументом которой является перемещающееся замыкание.
use std::thread;
const NTHREADS: u32 = 10;
// Это главный поток
fn main() {
// Создаем вектор для хранения дочерних потоков, которые будут созданы.
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();
}
}
Эти потоки будут планироваться операционной системой.
Резюме
Поздравляем! Вы завершили лабораторную работу по потокам. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.