如何使用c ++中的boost在同一个类成员中创建并行线程?

时间:2015-08-21 10:34:59

标签: c++ multithreading boost parallel-processing

我想使用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();

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

1 个答案:

答案 0 :(得分:0)

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

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

  • 从不 - 直到外部杀死你的过程才会运行
  • 收到某些特定输入
  • 当发生了一定数量的事件时
  • 当某个队列为空时
  • 截止日期已过期