Struct std::thread::Thread
pub struct Thread { /* fields omitted */ }
A handle to a thread.
Threads are represented via the Thread
type, which you can get in one of two ways:
- By spawning a new thread, e.g., using the
thread::spawn
function, and callingthread
on theJoinHandle
. - By requesting the current thread, using the
thread::current
function.
The thread::current
function is available even for threads not spawned by the APIs of this module.
There is usually no need to create a Thread
struct yourself, one should instead use a function like spawn
to create new threads, see the docs of Builder
and spawn
for more details.
Implementations
impl Thread
pub fn unpark(&self)
Atomically makes the handle’s token available if it is not already.
Every thread is equipped with some basic low-level blocking support, via the park
function and the unpark()
method. These can be used as a more CPU-efficient implementation of a spinlock.
See the park documentation for more details.
Examples
use std::thread; use std::time::Duration; let parked_thread = thread::Builder::new() .spawn(|| { println!("Parking thread"); thread::park(); println!("Thread unparked"); }) .unwrap(); // Let some time pass for the thread to be spawned. thread::sleep(Duration::from_millis(10)); println!("Unpark the thread"); parked_thread.thread().unpark(); parked_thread.join().unwrap();
pub fn id(&self) -> ThreadId
Gets the thread’s unique identifier.
Examples
use std::thread; let other_thread = thread::spawn(|| { thread::current().id() }); let other_thread_id = other_thread.join().unwrap(); assert!(thread::current().id() != other_thread_id);
pub fn name(&self) -> Option<&str>
Gets the thread’s name.
For more information about named threads, see this module-level documentation.
Examples
Threads by default have no name specified:
use std::thread; let builder = thread::Builder::new(); let handler = builder.spawn(|| { assert!(thread::current().name().is_none()); }).unwrap(); handler.join().unwrap();
Thread with a specified name:
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();
Trait Implementations
impl Clone for Thread
fn clone(&self) -> Thread
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for Thread
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
impl<T> From<T> for T
pub fn from(t: T) -> T
Performs the conversion.
pub fn into(self) -> U
Performs the conversion.
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
#41263)recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
Performs the conversion.
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
Performs the conversion.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/thread/struct.Thread.html