boost.asio 的 deadline_timer

写了一段用deadline_timer循环回调的函数,类似这个:http://stackoverflow.com/questions/3539583/boost-asio-deadline-timer

出现了与题主一样的问题,原来是忽视了deadline_timer这个定时器的生命周期,当这个定时器在栈上被析构之后,它绑定的回调函数回调时会出错,而由于没有对作为回调函数参数的boost::system::error_code进行判断,又再次在栈上构造了一个定时器,所以变成了一个没有定时的循环事件...

  • 可见定时器被析构,回调函数会立即被回调,而不是等待一个定时时长。
  • 回调函数最好带上boost::system::error_code参数,对错误情况进行判断,方便出错以后的调试

你可能感兴趣的:(timer)