Struct SyncWaker

pub(crate) struct SyncWaker { pub(in ::sync::mpmc::waker) inner: Mutex<Waker>, pub(in ::sync::mpmc::waker) is_empty: Atomic<bool> }

A waker that can be shared among threads without locking.

This is a simple wrapper around Waker that internally uses a mutex for synchronization.

Fields

inner: Mutex<Waker>

The inner Waker.

is_empty: Atomic<bool>

true if the waker is empty.

Implementations

impl SyncWaker

fn new() -> Self

Creates a new SyncWaker.

fn register(&self, oper: Operation, cx: &Context)

Registers the current thread with an operation.

fn unregister(&self, oper: Operation) -> Option<Entry>

Unregisters an operation previously registered by the current thread.

fn notify(&self)

Attempts to find one thread (not the current one), select its operation, and wake it up.

fn disconnect(&self)

Notifies all threads that the channel is disconnected.

Trait Implementations

impl Drop for SyncWaker

fn drop(&mut self)

Auto Trait Implementations

impl !Freeze for SyncWaker

impl !Send for SyncWaker

impl !Sync for SyncWaker

impl RefUnwindSafe for SyncWaker

impl Unpin for SyncWaker

impl UnsafeUnpin for SyncWaker

impl UnwindSafe for SyncWaker

Blanket Implementations

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

fn type_id(&self) -> TypeId

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

fn borrow(&self) -> &T

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

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

impl<T> From<T> for SyncWaker

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> SizeHint for SyncWaker where T: ?Sized,

fn lower_bound(&self) -> usize
fn upper_bound(&self) -> Option<usize>

impl<T> SizedTypeProperties for SyncWaker

impl<T, U> Into<U> for SyncWaker 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 SyncWaker where U: Into<T>,

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

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

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