我正在创建一个futures_cpupool::CpuPool
,其中每个线程都需要打开数据库连接,这是一个代价高昂的初始化。这些初始化的状态需要在作业之间持续存在,因为它们需要很长时间才能完成。数据库连接是工作线程完成其工作所必需的。
答案 0 :(得分:0)
免责声明:可能有一个更好的解决方案,利用一些CpuPool
API,也许......
一个简单的解决方案是使用与ConnectionPool
共享的单独Arc
。
然后,只要您启动一个帖子并要求他们从那里获取连接,您只需将ConnectionPool
的引用移交给它。
游泳池本身将负责:
如果更改连接参数(例如,指定不同的区域设置),这里有一点点困难。我建议给每个客户一个新鲜的"连接,所有设置都标准化为已知值。
还有一个设计选择,用于何时(以及在哪个线程上)执行初始化和回收工作;我建议你从最简单的解决方案开始: