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