我有一个async_connected()客户端,单线程,我的deadline_timer
作为某个连接类的成员持久化。我的deadline_timer
只发了一次,当我的deadline_timer到期时我正试图做三件事:
发送和读取工作,问题是计时器永远不会再过期。 io_service.run()
并没有因为没有打印而没有停止...为什么我的deadline_timer
没有再次到期?
答案 0 :(得分:2)
我弄清楚我做错了什么,不知道为什么它会导致我看到的症状,但当我在async_read()
处理程序中使用deadline_timer
阅读时,在我完成后我清除了每次阅读后我的boost::asio::buffer
接收缓冲区都带有memset()
。我知道我可能不需要这种内存清理。问题是我清理了比使用接收缓冲区async_read()
更多的内存,因此我设置了无效的位置。我不确定为什么导致deadline_timer
永远不会再次发射,async_read()
之后也没有再次发挥作用。