Struct std::thread::Thread1.0.0[][src]

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.


impl Thread

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");
        println!("Thread unparked");

// Let some time pass for the thread to be spawned.

println!("Unpark the thread");


Gets the thread's unique identifier.


use std::thread;

let other_thread = thread::spawn(|| {

let other_thread_id = other_thread.join().unwrap();
assert!(thread::current().id() != other_thread_id);Run

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(|| {


Thread with a specified name:

use std::thread;

let builder = thread::Builder::new()

let handler = builder.spawn(|| {
    assert_eq!(thread::current().name(), Some("foo"))


Trait Implementations

impl Clone for Thread

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Debug for Thread

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl Send for Thread

impl Sync for Thread