1 个不稳定版本
使用旧的 Rust 2015
0.1.1 | 2022年1月19日 |
---|---|
0.1.0 |
|
#1081 in 并发
在 threadlanes 中使用
8KB
89 行
CountDownLatch
一个同步工具,允许一个或多个线程等待其他线程中执行的操作集完成。
CountDownLatch 使用一个计数来初始化。await 方法会在当前计数由于调用 count_down() 方法达到零而阻塞,之后所有等待的线程将被释放,并且后续的 await 调用将立即返回。
CountDownLatch 是线程安全的。多个线程可以调用 await()
来等待多个线程调用 count_down()
。
示例
use countdown_latch::CountDownLatch;
use std::sync::Arc;
use std::thread;
use std::time::Duration;
fn main() {
// create a CountDownLatch with count=5
let latch = Arc::new(CountDownLatch::new(5));
// create 5 threads that sleep for a variable amount of time before calling latch.count_down()
for i in 0..5 {
let tlatch = Arc::clone(&latch);
thread::spawn(move || {
thread::sleep(Duration::from_millis(i * 100));
println!("unlatching {}", i);
tlatch.count_down();
});
}
// await completion of the latch
latch.await();
// print done, which will appear in the console after all "unlatching" messages
println!("done");
}