直接.clone() diesel_async的Pool跨线程是否安全?能否控制总连接数不超限?
问题解答
结论:这种方式完全能满足总连接数不超过 max_size 的需求
- deadpool 的
Pool<AsyncPgConnection>本身就是为多异步任务共享设计的线程安全类型,内部已经通过Arc封装了连接池的核心状态(比如连接计数、等待队列等) - 调用
Pool.clone()并不是创建新的连接池,而是复制内部的Arc指针——所有克隆出来的Pool实例共享同一个底层连接池 - 不管你把这些克隆实例传入多少个 tokio 异步线程,所有线程的连接请求都会统一受同一个池的
max_size限制,总连接数绝不会超过设定值
额外说明:你不需要额外用 Arc、Mutex 或 RwLock 包裹连接池,Pool 本身已经实现了 Send 和 Sync trait,直接克隆传递给异步线程是完全安全的。
内容的提问来源于stack exchange,提问作者jjangga
相关产品推荐
相关产品推荐

