1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年2月2日 |
---|
#908 在 并发 中
每月 354 次下载
14KB
129 行
ThreadGroup
此crate将一组线程(其闭包具有相同的返回类型)作为单个单元处理,允许您对组中的第一个就绪的线程执行 join()
或 join_timeout()
。内部,它使用通道来通知完成线程。
当您想要检查是否有任何线程已崩溃或提前返回以进行错误处理或进度报告时,这非常有用。这不可能使用 std::thread::JoinHanlde.join()
,因为它是一个阻塞调用,所以线程2可能在您无限期地等待线程1时崩溃或完成。
另请参阅
如果 ThreadGroup
不是您需要的,并且无法改进以满足您的需求,请查看这些其他crates:
- Thread_tryjoin 提供与
ThreadGroup::join_timeout()
相同的功能,其API更接近std
。但是它依赖于Linux-only API,并且一次只能处理一个线程(因此,大量线程的try_join()
会导致时间或CPU的浪费)。 - Thread-control 和 Runloop 允许您停止线程,并在它们崩溃或完成时测试而不阻塞。同样,这仅一次处理一个线程。
- Rayon 是一种高级抽象,可以将计算分布到多个线程。
- 线程池是处理短计算的常用方法,以避免反复支付高昂的设置成本。
- Future 与线程无关,但通常是处理“任务A完成后启动任务B”算法的更好方式。
贡献
请通过 Github 创建问题和发送拉取请求。
线程组以MIT协议授权。除非您明确声明,否则您根据MIT许可证定义的、有意提交以包含在本作品中的任何贡献,将按照上述方式授权,不附加任何额外条款或条件。