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

how to create parallel threads in same class member using boost in c++?

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

我想在并行线程中监视响应和请求队列。那么如何在 class?

的同一个成员函数中创建并行线程呢?

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

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

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