Тип Builder
Тип Builder из модуля std::thread позволяет
создать новый поток с заданными параметрами. Вместо
прямого вызова функции spawn, вы создаёте
экземпляр Builder, настраиваете его методами
name и stack_size, а затем запускаете
поток методом spawn. Метод new создаёт
новый Builder. Параметром метод name
принимает имя потока, а метод stack_size -
размер стека в байтах.
Синтаксис
let builder = thread::Builder::new();
builder.name(String::from("name"));
builder.stack_size(size);
builder.spawn(closure);
Пример
Давайте создадим поток с именем "worker"
и выведем его имя внутри потока:
use std::thread;
fn main()
{
let builder = thread::Builder::new()
.name("worker".to_string());
let handle = builder.spawn(|| {
let current = thread::current();
println!("{:?}", current.name());
}).unwrap();
handle.join().unwrap();
}
Результат выполнения кода:
Some("worker")
Пример
Давайте создадим поток с увеличенным размером стека и выполним в нём простое вычисление:
use std::thread;
fn main()
{
let builder = thread::Builder::new()
.name("big_stack".to_string())
.stack_size(1024 * 1024);
let handle = builder.spawn(|| {
let res = 2 + 3;
println!("{}", res);
}).unwrap();
handle.join().unwrap();
}
Результат выполнения кода:
5
Смотрите также
-
метод
new,
который создаёт новый Builder -
метод
name,
который задаёт имя потока -
метод
stack_size,
который задаёт размер стека потока -
метод
spawn,
который запускает поток с настройками Builder