我想使用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();
我想监视并行线程中的响应和请求队列。那么如何在类的相同成员函数内创建并行线程呢?
答案 0 :(得分:0)
join
是一个阻塞调用 - 它等待线程完成,因此在创建线程后立即调用 通常是没有意义的 - 你可以调用该函数新创建的线程将自己执行。
通常,您只需要join
,因为该计划已完成其工作并正在关闭。您应该考虑一下如何知道何时开始关闭,例如: