16 个版本
0.0.18 | 2024年7月15日 |
---|---|
0.0.17 | 2024年3月3日 |
0.0.16 | 2023年12月23日 |
0.0.15 | 2023年5月15日 |
0.0.10 | 2021年9月14日 |
#6 in #async-pool
318 个月下载量
在 5 个 crate 中使用 (4 直接)
12KB
269 行代码,不包括注释
simple-pool
适用于任何类型资源的简单快速异步池
想法
这是一个创建任何自定义池的辅助库
Crate
https://crates.io/crates/simple-pool
示例
use simple_pool::ResourcePool;
use std::sync::Arc;
use tokio::net::TcpStream;
async fn test() {
// create a local or static resource pool
let resource_pool: Arc<ResourcePool<TcpStream>> =
Arc::new(ResourcePool::new());
{
// put 20 tcp connections there
for _ in 0..20 {
let client = TcpStream::connect("127.0.0.1:80").await.unwrap();
resource_pool.append(client);
}
}
let n = 1_000_000;
for _ in 0..n {
let pool = resource_pool.clone();
tokio::spawn(async move {
// gets open tcp connection as soon as one is available
let _client = pool.get().await;
});
}
}
依赖项
~0.4–5.5MB
~11K SLoC