【问题标题】:how to create parallel threads in same class member using boost in c++?如何使用 c++ 中的 boost 在同一类成员中创建并行线程?
【发布时间】:2015-08-21 10:34:59
【问题描述】:

我想使用boost 创建两个并行线程。一个线程向请求队列添加数据,另一个线程监控响应队列中的数据。

我已经为请求队列创建了一个线程,如下所示。

在成员函数start_monitoring() 中,我创建了一个线程来处理请求。

m_ReqThrd = new boost::thread((boost::bind(&t::HandleRequest, this)));
m_ReqThrd ->join();

之后,如果我尝试在同一个成员函数中创建另一个线程,则在第一个线程(请求线程)退出之前不会创建它。

m_RespThrd = new boost::thread((boost::bind(&t::HandleResponse, this)));
m_RespThrd ->join();

我想监控并行线程中的响应和请求队列。那么如何在类的同一个成员函数中创建并行线程呢?

【问题讨论】:

    标签: c++ multithreading boost parallel-processing


    【解决方案1】:

    join 是一个阻塞调用——它等待线程完成,所以在创建线程之后立即调用它通常是没有意义的——你可以调用新创建的线程将执行的函数自己。

    通常您只想join,因为该程序已完成工作并正在关闭。您应该考虑一下如何知道何时开始关闭,例如:

    • 永远不要 - 一直运行直到外部的东西杀死你的进程
    • 收到某些特定输入时
    • 发生一定数量的事件时
    • 当某些队列为空时
    • 当某个截止日期到期时

    【讨论】:

      猜你喜欢
      • 2013-10-30
      • 2021-04-15
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2017-01-09
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多