boost asio deadline_timer

徘徊边缘 提交于 2019-11-30 18:43:41

You're creating the deadline_timer as a local variable and then immediately exiting the function. This causes the timer to destruct and cancel itself, and calls your function with an error code which you ignore, causing the infinite loop.

Using a single timer object, stored in a member or global variable, should fix this.

If you look at the error code, you're getting operation cancelled errors.

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

using namespace boost::asio;
using namespace std;

io_service io;

deadline_timer t(io, boost::posix_time::seconds(5));

void print(const boost::system::error_code& /*e*/)
{
  cout << "Hello, world!\n";
  t.expires_from_now(boost::posix_time::seconds(5));
  t.async_wait(print);
}


int main()
{

  //deadline_timer t(io, boost::posix_time::seconds(5));
  t.async_wait(print);

  io.run();

  return 0;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!