本文简要介绍rust语言中 std::sync::Barrier.wait
的用法。
用法
pub fn wait(&self) -> BarrierWaitResult
阻塞当前线程,直到所有线程都在这里会合。
在所有线程都交会一次后,屏障可以重复使用,并且可以连续使用。
当从该函数返回时,单个(任意)线程将收到一个 BarrierWaitResult
,它从 BarrierWaitResult::is_leader()
返回 true
,而所有其他线程将收到一个从 BarrierWaitResult::is_leader()
返回 false
的结果。
例子
use std::sync::{Arc, Barrier};
use std::thread;
let mut handles = Vec::with_capacity(10);
let barrier = Arc::new(Barrier::new(10));
for _ in 0..10 {
let c = Arc::clone(&barrier);
// 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();
}
相关用法
- Rust Barrier.new用法及代码示例
- Rust BarrierWaitResult用法及代码示例
- Rust BarrierWaitResult.is_leader用法及代码示例
- Rust Barrier用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust Bound.cloned用法及代码示例
- Rust BinaryHeap.capacity用法及代码示例
- Rust Builder.stack_size用法及代码示例
- Rust BTreeSet.insert用法及代码示例
- Rust BitXor用法及代码示例
- Rust Box.try_new_uninit_in用法及代码示例
- Rust BTreeSet.get用法及代码示例
- Rust BinaryHeap.push用法及代码示例
- Rust BitOrAssign用法及代码示例
- Rust BTreeSet.split_off用法及代码示例
- Rust BitXorAssign用法及代码示例
- Rust BTreeSet.is_disjoint用法及代码示例
- Rust Box.new_in用法及代码示例
- Rust BufRead.split用法及代码示例
- Rust Box.new_zeroed_in用法及代码示例
- Rust Box.try_new_zeroed_slice用法及代码示例
- Rust BTreeMap.get用法及代码示例
- Rust Box.try_new_in用法及代码示例
- Rust BTreeSet用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::sync::Barrier.wait。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。