1个不稳定版本
0.1.0 | 2023年8月20日 |
---|
#1848 在 异步
13KB
126 行
bounded_join_set
为Tokio提供的并发限制JoinSet。
![MIT协议][mit-badge] ![构建状态][actions-badge]
bounded_join_set
库为Tokio的 JoinSet
提供了一个简单的包装,具有可配置的并发限制。它公开了与本地 JoinSet
相同的API,但确保无论添加到集合中的任务有多少,只有根据并发限制预定的数量将被并发轮询。
为什么使用 bounded_join_set
?
在您想使用Tokio生成多个并发任务,但又想避免因太多同时任务而压垮系统的场景下,bounded_join_set
可以帮助您避免资源耗尽,同时仍能受益于并发。
如何使用
将 bounded_join_set
添加到您的 Cargo.toml
依赖项
[dependencies]
bounded_join_set = "0.1.0"
以下是一个基本使用示例
use bounded_join_set::JoinSet;
#[tokio::main]
async fn main() {
let concurrency_limit = 5;
let mut join_set = JoinSet::new(concurrency_limit);
for _ in 0..10 {
join_set.spawn(async {
// Your concurrent task here.
});
}
while join_set.join_next().await.is_some() {}
}
特性与优势
- 简单的API:如果您熟悉Tokio的
JoinSet
,那么您已经知道如何使用bounded_join_set
。 - 资源管理:通过控制并发轮询的任务数量来防止系统过载。
- 灵活:根据您的系统能力和需求设置自己的并发限制。
限制
虽然 bounded_join_set
旨在提供比Tokio原生 JoinSet
更好的并发控制,但还有一些限制需要注意
- 不支持
spawn_blocking
:截至目前版本,该库不支持Tokio提供的spawn_blocking
方法。如果您的应用程序依赖于CPU密集型操作,并从中受益于spawn_blocking
功能,则需要从该库中单独管理。我们正在考虑在未来的版本中扩展对该功能的支持,但尚未确定具体时间表。
我们总是热衷于改进和扩展 bounded_join_set
的功能。如果您遇到任何问题或有任何建议,请随时在我们的GitHub仓库中打开一个问题。
贡献与支持
欢迎贡献、功能请求和反馈。请随意在 GitHub 仓库中打开一个问题或拉取请求。
许可证: MIT
依赖项
~2–3MB
~46K SLoC