Struct rbatis_core::runtime::sync::Barrier [−]
pub struct Barrier { /* fields omitted */ }Expand description
A counter to synchronize multiple tasks at the same time.
Implementations
impl Barrier
impl Barrier
pub async fn wait(&'_ self) -> BarrierWaitResult
pub async fn wait(&'_ self) -> BarrierWaitResult
Blocks the current task until all tasks reach this point.
Barriers are reusable after all tasks have synchronized, and can be used continuously.
Returns a BarrierWaitResult indicating whether this task is the “leader”, meaning the
last task to call this method.
Examples
use async_lock::Barrier;
use futures_lite::future;
use std::sync::Arc;
use std::thread;
let barrier = Arc::new(Barrier::new(5));
for _ in 0..5 {
let b = barrier.clone();
thread::spawn(move || {
future::block_on(async {
// The same messages will be printed together.
// There will NOT be interleaving of "before" and "after".
println!("before wait");
b.wait().await;
println!("after wait");
});
});
}