本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。