pub struct Barrier { /* private fields */ }Expand description
A barrier which enables multiple threads to synchronize the beginning of some computation.
Implementations§
Source§impl Barrier
impl Barrier
Sourcepub fn wait(&mut self) -> BarrierWaitResult
pub fn wait(&mut self) -> BarrierWaitResult
Blocks the current thread until all threads have rendezvoused here.
Barriers are re-usable after all threads have rendezvoused once, and can be used continuously.
A single (arbitrary) thread will receive a BarrierWaitResult that returns true from
is_leader when returning from this function, and all other threads will receive a
result that will return false from is_leader.
§Examples
use hurdles::Barrier;
use std::thread;
let mut handles = Vec::with_capacity(10);
let mut barrier = Barrier::new(10);
for _ in 0..10 {
let mut c = barrier.clone();
// The same messages will be printed together.
// You will NOT see any interleaving.
handles.push(thread::spawn(move|| {
println!("before wait");
c.wait();
println!("after wait");
}));
}
// Wait for other threads to finish.
for handle in handles {
handle.join().unwrap();
}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