Struct std::thread::Thread 1.0.0[−][src]
pub struct Thread { /* fields omitted */ }
Expand description
线程的句柄。
线程通过 Thread
类型表示,您可以通过以下两种方式之一来获取:
- 通过生成一个新线程,例如使用
thread::spawn
函数,并在JoinHandle
上调用thread
。 - 通过使用
thread::current
函数来请求当前线程。
thread::current
函数甚至可用于不是由该模块的 API 生成的线程。
通常不需要自己创建 Thread
结构体,而应使用 spawn
之类的函数来创建新线程,有关更多详细信息,请参见 Builder
和 spawn
的文档。
Implementations
通过原子方式使句柄的 token 可用 (如果尚不可用)。
每个线程都通过 park
函数和 unpark()
方法提供了一些基本的阻塞支持。
这些可用作自旋锁的 CPU 效率更高的实现。
有关更多详细信息,请参见 park 文档。
Examples
use std::thread;
use std::time::Duration;
let parked_thread = thread::Builder::new()
.spawn(|| {
println!("Parking thread");
thread::park();
println!("Thread unparked");
})
.unwrap();
// 花费一些时间来生成线程。
thread::sleep(Duration::from_millis(10));
println!("Unpark the thread");
parked_thread.thread().unpark();
parked_thread.join().unwrap();
Run获取线程的名称。
有关命名线程的更多信息,请参见 模块级文档。
Examples
默认情况下,线程未指定名称:
use std::thread;
let builder = thread::Builder::new();
let handler = builder.spawn(|| {
assert!(thread::current().name().is_none());
}).unwrap();
handler.join().unwrap();
Run具有指定名称的线程:
use std::thread;
let builder = thread::Builder::new()
.name("foo".into());
let handler = builder.spawn(|| {
assert_eq!(thread::current().name(), Some("foo"))
}).unwrap();
handler.join().unwrap();
Run