Printer构造之后会在后台执行,每秒打印一次,主线程sleep 5秒后停止后台打印
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
class Printer
{
public:
Printer()
: timer_(io_, boost::posix_time::seconds(1))
, count_(0)
{
timer_.async_wait(boost::bind(&Printer::handle, this));
boost::thread t(boost::bind(&boost::asio::io_service::run, &io_));
t.detach();
}
void stop()
{
io_.stop();
}
private:
void handle()
{
std::cout << ++count_ << std::endl;
timer_.expires_from_now(boost::posix_time::seconds(1));
timer_.async_wait(boost::bind(&Printer::handle, this));
}
private:
boost::asio::io_service io_;
boost::asio::deadline_timer timer_;
int count_;
};
int _tmain(int argc, _TCHAR* argv[])
{
Printer printer;
std::cout << "go ..." << std::endl;
boost::this_thread::sleep(boost::posix_time::seconds(5));
printer.stop();
system("pause");
return 0;
}