Struct std::sync::Barrier 1.0.0[−][src]
pub struct Barrier { /* fields omitted */ }
Expand description
屏障使多个线程能够同步某些计算的开始。
Examples
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); // 相同的消息将一起打印。 // 您将看不到任何交错。 handles.push(thread::spawn(move|| { println!("before wait"); c.wait(); println!("after wait"); })); } // 等待其他线程完成。 for handle in handles { handle.join().unwrap(); }Run
Implementations
阻塞当前线程,直到所有线程都在此处集合为止。
所有线程集合一次后,屏障可以重新使用,并且可以连续使用。
从该函数返回时,单个 (arbitrary) 线程将接收从 BarrierWaitResult::is_leader()
返回 true
的 BarrierWaitResult
,而所有其他线程将接收从 BarrierWaitResult::is_leader()
返回 false
的结果。
Examples
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); // 相同的消息将一起打印。 // 您将看不到任何交错。 handles.push(thread::spawn(move|| { println!("before wait"); c.wait(); println!("after wait"); })); } // 等待其他线程完成。 for handle in handles { handle.join().unwrap(); }Run