gpt4 book ai didi

c++ - boost::asio::deadline_timer 在计时器处理程序中完成 async_read() 和 async_write() 后不会过期

转载 作者:行者123 更新时间:2023-11-28 03:42:10 24 4
gpt4 key购买 nike

我有一个 async_connected() 客户端,单线程,并且我的 deadline_timer 作为某个连接类的成员持久存在。我的 deadline_timer 只响一次,当我的 deadline_timer 到期时,我正在尝试做 3 件事:

  1. socket1 上的 async_write
  2. socket1 上的 async_read
  3. async_wait 在同一个计时器上,因为我希望这个计时器在 4 秒内再次响起。

发送和读取工作,问题是定时器永远不会再次过期。 io_service.run() 没有停止,因为它没有打印出来......为什么我的 deadline_timer 没有再次过期?

最佳答案

我弄清楚我做错了什么,不确定为什么会导致我看到的症状,但是当我在 deadline_timer 处理程序中使用 async_read() 读取时,完成后,我在每次读取后用 memset() 清除了我的 boost::asio::buffer 接收缓冲区。我知道我可能不需要这个内存清理。问题是我清除的内存比我给 async_read() 的接收缓冲区多,所以我正在设置无效位置。我不确定为什么这会导致 deadline_timer 不再触发,而且 async_read() 之后也不再工作。

关于c++ - boost::asio::deadline_timer 在计时器处理程序中完成 async_read() 和 async_write() 后不会过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com