Struct Barrier
pub struct Barrier { /* private fields */ }
A barrier enables multiple tasks to synchronize the beginning of some computation.
#
# async
Implementations
impl Barrier
fn new(n: usize) -> BarrierCreates a new barrier that can block a given number of tasks.
A barrier will block
n-1 tasks which callBarrier::waitand then wake up all tasks at once when thenth task callswait.async fn wait(&self) -> BarrierWaitResultDoes not resolve until all tasks have rendezvoused here.
Barriers are re-usable after all tasks have rendezvoused once, and can be used continuously.
A single (arbitrary) future will receive a
BarrierWaitResultthat returnstruefromBarrierWaitResult::is_leaderwhen returning from this function, and all other tasks will receive a result that will returnfalsefromis_leader.Cancel safety
This method is not cancel safe.
Trait Implementations
impl Debug for Barrier
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl !Freeze for Barrier
impl !RefUnwindSafe for Barrier
impl !UnwindSafe for Barrier
impl Send for Barrier
impl Sync for Barrier
impl Unpin for Barrier
impl UnsafeUnpin for Barrier
Blanket Implementations
impl<T> Any for Barrier
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Barrier
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Barrier
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> From<T> for Barrier
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into<U> for Barrier
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Barrier
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Barrier
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>