pub struct Barrier { /* private fields */ }
Available on
unstable
only.Expand description
A barrier enables multiple tasks to synchronize the beginning of some computation.
§Examples
use async_std::sync::{Arc, Barrier};
use async_std::task;
let mut handles = Vec::with_capacity(10);
let barrier = Arc::new(Barrier::new(10));
for _ in 0..10 {
let c = barrier.clone();
// The same messages will be printed together.
// You will NOT see any interleaving.
handles.push(task::spawn(async move {
println!("before wait");
c.wait().await;
println!("after wait");
}));
}
// Wait for the other futures to finish.
for handle in handles {
handle.await;
}
Implementations§
Source§impl Barrier
impl Barrier
Sourcepub async fn wait(&self) -> BarrierWaitResult
pub async fn wait(&self) -> BarrierWaitResult
Blocks the current task until all tasks have rendezvoused here.
Barriers are re-usable after all tasks have rendezvoused once, and can be used continuously.
A single (arbitrary) task will receive a BarrierWaitResult
that
returns true
from is_leader
when returning from this function, and
all other tasks will receive a result that will return false
from
is_leader
.
§Examples
use async_std::sync::{Arc, Barrier};
use async_std::task;
let mut handles = Vec::with_capacity(10);
let barrier = Arc::new(Barrier::new(10));
for _ in 0..10 {
let c = barrier.clone();
// The same messages will be printed together.
// You will NOT see any interleaving.
handles.push(task::spawn(async move {
println!("before wait");
c.wait().await;
println!("after wait");
}));
}
// Wait for the other futures to finish.
for handle in handles {
handle.await;
}
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Barrier
impl !RefUnwindSafe for Barrier
impl Send for Barrier
impl Sync for Barrier
impl Unpin for Barrier
impl !UnwindSafe for Barrier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more