Класс Thread
Класс Thread представляет собой дескриптор потока выполнения.
Экземпляр этого класса возвращается функциями spawn
и Builder::spawn. С его помощью можно получить
идентификатор потока, узнать его имя, а также управлять
его пробуждением с помощью метода unpark.
Параметров класс не принимает, так как это тип-дескриптор.
Синтаксис
std::thread::Thread
Пример
Давайте создадим поток и получим его дескриптор
с помощью метода thread:
use std::thread;
fn main()
{
let handle = thread::spawn(|| {
println!("Hello from thread");
});
let thread_ref = handle.thread();
println!("Thread id: {:?}", thread_ref.id());
handle.join().unwrap();
}
Результат выполнения кода:
Hello from thread
Thread id: ThreadId(1)
Пример
Давайте получим имя текущего потока с помощью
функции current и метода name:
use std::thread;
fn main()
{
let current = thread::current();
match current.name() {
Some(name) => println!("Thread name: {}", name),
None => println!("Thread has no name"),
}
}
Результат выполнения кода:
Thread name: main
Пример
Давайте создадим поток, приостановим его с помощью
функции park и затем пробудим с помощью
метода unpark:
use std::thread;
use std::time::Duration;
fn main()
{
let handle = thread::spawn(|| {
println!("Thread is going to park");
thread::park();
println!("Thread is unparked");
});
let thread_ref = handle.thread().clone();
thread::sleep(Duration::from_millis(100));
println!("Main thread unparking worker");
thread_ref.unpark();
handle.join().unwrap();
}
Результат выполнения кода:
Thread is going to park
Main thread unparking worker
Thread is unparked
Смотрите также
-
функция
spawn,
которая создает новый поток и возвращает JoinHandle -
структура
JoinHandle,
которая представляет дескриптор ожидания потока -
функция
current,
которая возвращает дескриптор текущего потока -
функция
sleep,
которая приостанавливает текущий поток на указанное время