2 个版本

使用旧的 Rust 2015

0.1.1 2015年11月29日
0.1.0 2015年11月27日

15#wait-group

23 每月下载量

MIT 许可证

4KB

waitout

Build Status

Waitout 提供了一个简单的接口,用于跟踪和等待多个异步任务的完成。

api 文档

请在此处查找:这里.

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
waitout = "0.1"

用法

有时,为了高效地完成聚合任务,将独立任务异步地分摊出去是有用的。异步任务有时会被分阶段在不同的范围内进行,这使得很难监控它们的完成状态。一些语言有类似于 CountDownLatchesWaitGroups 的标准库接口来帮助解决这个问题。在 Rust 中没有类似的接口,因此 waitout 应运而生。

Waitout 是围绕几个 Rust 同步原语的一个简单包装,这使得分阶段任务完成更加直接。想法很简单,保持引用创建一个共享计数器,每当你希望等待的任务完成时,都会增加这个计数器。当一个任务完成时,递减这个计数器。当计数器达到 0 时,当前线程可以继续。

extern crate waitout;

use std::sync::Arc;
use std::thread;
use waitout::WaitGroup;

fn main() {
    let wg = Arc::new(
        WaitGroup::new(0)
    );
    for _ in 0..100 {
        wg.add(1);
        let wg2 = wg.clone();
        thread::spawn(move|| {
            thread::sleep_ms(2000);
            wg2.done();
        });
    }
    wg.wait();
    println!("all set")
}

Doug Tangren (softprops) 2015

无运行时依赖