#async-pool #pool #resources #async

simple-pool

适用于任何类型资源的简单异步池

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

Download history 323/week @ 2024-04-14 929/week @ 2024-04-21 624/week @ 2024-04-28 698/week @ 2024-05-05 823/week @ 2024-05-12 34/week @ 2024-05-19 45/week @ 2024-05-26 91/week @ 2024-06-02 71/week @ 2024-06-09 22/week @ 2024-06-16 6/week @ 2024-06-23 19/week @ 2024-07-07 198/week @ 2024-07-14 37/week @ 2024-07-21 64/week @ 2024-07-28

318 个月下载量
5 个 crate 中使用 (4 直接)

MIT 许可证

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