#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 · Rust 包仓库 323/week @ 2024-04-14 · Rust 包仓库 929/week @ 2024-04-21 · Rust 包仓库 624/week @ 2024-04-28 · Rust 包仓库 698/week @ 2024-05-05 · Rust 包仓库 823/week @ 2024-05-12 · Rust 包仓库 34/week @ 2024-05-19 · Rust 包仓库 45/week @ 2024-05-26 · Rust 包仓库 91/week @ 2024-06-02 · Rust 包仓库 71/week @ 2024-06-09 · Rust 包仓库 22/week @ 2024-06-16 · Rust 包仓库 6/week @ 2024-06-23 · Rust 包仓库 19/week @ 2024-07-07 · Rust 包仓库 198/week @ 2024-07-14 · Rust 包仓库 37/week @ 2024-07-21 · Rust 包仓库 64/week @ 2024-07-28 · Rust 包仓库

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