Функция spawn
Функция spawn создает новый поток операционной системы
и выполняет в нем переданное замыкание. Параметром функция
принимает замыкание, которое будет выполнено в новом потоке.
Возвращает функция значение типа JoinHandle, которое
можно использовать для ожидания завершения потока и получения
его результата.
Синтаксис
std::thread::spawn(f)
Пример
Давайте создадим новый поток, который выведет строку
"Hello from thread":
use std::thread;
fn main()
{
let handle = thread::spawn(|| {
println!("Hello from thread");
});
handle.join().unwrap();
}
Результат выполнения кода:
"Hello from thread"
Пример
Давайте создадим поток, который вернет результат вычисления:
use std::thread;
fn main()
{
let handle = thread::spawn(|| {
let res = 2 + 3;
res
});
let res = handle.join().unwrap();
println!("{}", res);
}
Результат выполнения кода:
5
Пример
Давайте создадим несколько потоков и дождемся их завершения:
use std::thread;
fn main()
{
let mut handles = vec![];
for i in 1..=3 {
let handle = thread::spawn(move || {
println!("Thread {}", i);
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
}
Результат выполнения кода:
"Thread 1"
"Thread 2"
"Thread 3"
Смотрите также
-
структура
JoinHandle,
которая представляет дескриптор потока -
метод
join,
который ожидает завершения потока -
функция
sleep,
которая приостанавливает выполнение текущего потока -
структура
Builder,
которая позволяет настроить параметры нового потока