pub struct Thread { /* private fields */ }
Expand description
线程的句柄。
线程通过 Thread
类型表示,您可以通过以下两种方式之一来获取:
- 通过生成一个新线程,例如使用
thread::spawn
函数,并在JoinHandle
上调用thread
。 - 通过使用
thread::current
函数来请求当前线程。
thread::current
函数甚至可用于不是由该模块的 API 生成的线程。
通常不需要自己创建 Thread
结构体,而应使用 spawn
之类的函数来创建新线程,有关更多详细信息,请参见 Builder
和 spawn
的文档。
Implementations§
source§impl Thread
impl Thread
sourcepub fn unpark(&self)
pub fn unpark(&self)
通过原子方式使句柄的 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();
Runsourcepub fn name(&self) -> Option<&str>
pub fn name(&self) -> Option<&str>
获取线程的名称。
有关命名线程的更多信息,请参见 模块级文档。
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();
RunTrait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Thread
impl Send for Thread
impl Sync for Thread
impl Unpin for Thread
impl UnwindSafe for Thread
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
从拥有的值中借用。 Read more