boost :: asio和boost :: thread_group,其中每个线程都有自己的libpqxx连接

问题描述 投票:0回答:1

我正在尝试组合boost :: Asio,boost :: thread_group,其中每个线程都具有与数据库的自己的libpqxx(Prostgres)连接。我似乎找不到asio / thread_group的任何示例,其中任务运行所在的线程具有特定于连接的信息。 Asio似乎专门处理包含运行它所需的所有信息的任务。我在寻找错误的组合来解决我的特定问题吗?

我有很多请求进入我的程序,这些请求中的每一个都要求SQL命令再次运行到数据库(在我的情况下为timescaledb)。这些请求必须再次在有限的连接数(即数据库总数通常为8)上运行。

我的计划是建立一个由8个线程组成的thread_group,每个线程都与数据库有自己的连接,每个线程都与asio :: run连接。这样我就可以向asio :: post发布新查询,并在结果进入时通过signal2获得回调。

boost-asio boost-thread libpqxx
1个回答
0
投票

Asio“隐藏”线程,并且由于使用了assio :: strands,您可以或多或少避免并发。简而言之,您仅将任务扔给asio,因为线程可用,因此您的任务已提交,但是asio具有学习曲线,因为并发...

正如您所描述的,问题thread local storage是答案。

© www.soinside.com 2019 - 2024. All rights reserved.