下面的代码实现将一个io_service放入一个单独的线程管理,这样主线程可以做其他工作。
Ace_Thread_Manager
#include <ace/Thread_Manager.h>
int main(int argc, char* argv[])
{
boost::asio::io_service log_io_service;
ACE_Thread_Manager::instance()->spawn(&boost::asio::io_service::run, &log_io_service);
//其他操作
//主线程等待,防止退出。
ACE_Thread_Manager::instance()->wait();
return 0;
}
boost_thread
#include <boost/thread.hpp>
int main(int argc, char* argv[])
{
boost::asio::io_service log_io_service;
boost::thread t(
boost::bind( &boost::asio::io_service::run , &log_io_service )
);
//其他操作
//主线程等待,防止退出。
t.join();
return 0;
}