Struct Unparker

pub struct Unparker { /* private fields */ }

Unparks a thread parked by the associated Parker.

Implementations

impl Unparker

fn unpark(&self)

Atomically makes the token available if it is not already.

This method will wake up the thread blocked on park or park_timeout, if there is any.

Examples

use std::thread;
use std::time::Duration;
use crossbeam_utils::sync::Parker;

let p = Parker::new();
let u = p.unparker().clone();

thread::spawn(move || {
    thread::sleep(Duration::from_millis(500));
    u.unpark();
});

// Wakes up when `u.unpark()` provides the token.
p.park();
# std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
fn into_raw(this: Unparker) -> *const ()

Converts an Unparker into a raw pointer.

Examples

use crossbeam_utils::sync::{Parker, Unparker};

let p = Parker::new();
let u = p.unparker().clone();
let raw = Unparker::into_raw(u);
# let _ = unsafe { Unparker::from_raw(raw) };
unsafe fn from_raw(ptr: *const ()) -> Unparker

Converts a raw pointer into an Unparker.

Safety

This method is safe to use only with pointers returned by Unparker::into_raw.

Examples

use crossbeam_utils::sync::{Parker, Unparker};

let p = Parker::new();
let u = p.unparker().clone();

let raw = Unparker::into_raw(u);
let u = unsafe { Unparker::from_raw(raw) };

Trait Implementations

impl Clone for Unparker

fn clone(&self) -> Unparker

impl Debug for Unparker

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Send for Unparker

impl Sync for Unparker

Auto Trait Implementations

impl Freeze for Unparker

impl RefUnwindSafe for Unparker

impl Unpin for Unparker

impl UnsafeUnpin for Unparker

impl UnwindSafe for Unparker

Blanket Implementations

impl<T> Any for Unparker where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for Unparker where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for Unparker where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for Unparker where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for Unparker

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for Unparker where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T, U> Into<U> for Unparker where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for Unparker where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

impl<T, U> TryInto<U> for Unparker where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>