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:
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.
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.
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();
Gets the thread's unique identifier.
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);
Gets the thread's name.
For more information about named threads, see
this module-level documentation.
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();
Performs copy-assignment from source
. Read more
Formats the value using the given formatter. Read more
Creates owned data from borrowed data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
type Error = <U as TryFrom<T>>::Error
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more