Struct SyncStack

Source
pub struct SyncStack(/* private fields */);
Expand description

A stack of blocked threads.

Implementations§

Source§

impl SyncStack

Source

pub const INIT: Self

An empty SyncStack.

Source

pub const fn new() -> Self

Returns Self::INIT.

Source

pub fn park<P>(&self) -> bool
where P: Park,

Attempts to block the current thread on the top of the SyncStack.

Returns true if this thread was blocked and then unblocked.

Note that the Park implementation used does not have to be the same for every call to park; as such different thread implementations can all wait on the same SyncStack.

use sync_stack::*;
 
static STACK: SyncStack = SyncStack::INIT;
 
std::thread::spawn(move || {
  //This threads execution stops.
  STACK.park::<Thread>();
  println!("Ran Second");
});
 
println!("Ran First");
 
//The other thread resumes execution.
STACK.pop();
Source

pub fn pop(&self) -> bool

Unblocks a thread from the SyncStack.

Returns false if the stack was empty.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.