我目前正在將處理程序發佈到我的io_service並在線程池中執行它們。Boost Asio - 如何知道處理程序隊列何時爲空?
io_serv.post(boost::bind(&Class::bar, p1, p2));
我的工人運行此功能:
m_mutex.lock();
std::cout << "[" << boost::this_thread::get_id()
<< "] Thread Start" << std::endl;
m_mutex.unlock();
size_t tasks = m_serv.run();
m_mutex.lock();
std::cout << "[" << boost::this_thread::get_id() << "] accomplished "
<< tasks << " tasks" << std::endl;
m_mutex.unlock();
到目前爲止好,但現在我希望在處理隊列爲空不殺死我的積極的(但等待)線程觸發一個事件。
這是可能的和如何?
您的任務是否正在進行異步等待,導致它們不能立即處理? (類似於'async_receive'?) – Chad
不,他們完成他們的工作,通過隊列中的信號發佈新事件。一切完成後,所有線程都在等待。 – Kikohs
您可以保留處理程序發佈/執行的次數嗎?看到我的答案(對我的問題)在這裏:http://stackoverflow.com/questions/12166513/boostasio-thread-pools-and-thread-monitoring – Chad