我正在尝试组合boost :: Asio,boost :: thread_group,其中每个线程都有自己的libpqxx(Prostgres)与数据库的连接。我似乎找不到asio / thread_group的任何示例,其中任务运行所在的线程具有特定于连接的信息。 Asio似乎专门处理包含运行它所需的所有信息的任务。我在寻找错误的组合来解决我的特定问题吗?
我的程序中有很多请求,每个请求都需要SQL命令才能再次运行到DB(在我的情况下为timescaledb)。这些请求必须在数据库的有限数量的连接上运行(通常总共8个)。
我的计划是建立一个由8个线程组成的thread_group,每个线程都与数据库有自己的连接,每个线程都与asio :: run连接。这样我就可以向asio :: post发布新查询,并在结果进入时通过signal2获得回调。
答案 0 :(得分:0)
Asio可以“隐藏”线程,由于使用了assio :: strands,您可以或多或少避免并发。简而言之,您只能将任务扔给asio,因为有线程可以提交您的任务,但是asio具有学习曲线,因为并发...
在描述问题时,thread local storage是答案。