【问题标题】:boost::asio and boost::thread_group where each thread has it's own libpqxx connectionboost::asio 和 boost::thread_group 每个线程都有自己的 libpqxx 连接
【发布时间】:2020-03-19 10:00:16
【问题描述】:

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

我有很多请求进入我的程序,这些请求中的每一个都需要对数据库运行 SQL 命令(在我的例子中是 timescaledb)。这些请求必须在有限数量的数据库连接上运行(通常总共 8 个)。

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

【问题讨论】:

    标签: boost-asio boost-thread libpqxx


    【解决方案1】:

    Asio“隐藏”了线程,并且多亏了 assio::strands,您可以或多或少地避免并发。简而言之,您只需将任务扔给 asio,因为线程可用,您的任务已提交,但 asio 有一个学习曲线,因为并发......

    正如你描述你的问题thread local storage 就是答案。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 2020-06-17
      • 1970-01-01
      • 2019-02-21
      • 2015-04-04
      • 1970-01-01
      • 2016-06-06
      • 2020-05-27
      • 2012-09-29
      相关资源
      最近更新 更多