#thread #set-operations #complete #countdown #synchronization #wait #performed

countdown_latch

一个同步辅助工具,允许一个或多个线程等待其他线程中执行的操作集完成。

1 个不稳定版本

使用旧的 Rust 2015

0.1.1 2022年1月19日
0.1.0 2022年1月19日

#1081 in 并发


threadlanes 中使用

MIT/Apache

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");
}

无运行时依赖