Struct Unparker

struct Unparker { ... }

Unparks a thread parked by the associated Parker.

Implementations

impl Unparker

fn unpark(self: &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) };

impl Clone for Unparker

fn clone(self: &Self) -> Unparker

impl Debug for Unparker

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

impl Freeze for Unparker

impl RefUnwindSafe for Unparker

impl Send for Unparker

impl Sync for Unparker

impl Unpin for Unparker

impl UnsafeUnpin for Unparker

impl UnwindSafe for Unparker

impl<T> Any for Unparker

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for Unparker

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for Unparker

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

impl<T> CloneToUninit for Unparker

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

impl<T> From for Unparker

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for Unparker

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T, U> Into for Unparker

fn into(self: 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 for Unparker

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto for Unparker

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