【问题标题】:boost deadline_timer cancels pending async operationsboost deadtime_timer 取消挂起的异步操作
【发布时间】:2014-11-18 18:45:53
【问题描述】:

需要对此进行澄清。

这是否意味着同一个 io_service 对象上的任何未决操作都将被取消?如果是这样,如何使用具有多个套接字的 io_service 对象。我有一个带有多个套接字的应用程序,其中任意数量的套接字都可能有一个挂起的异步读取。如果我想在 ssl 握手操作期间在一个套接字上使用计时器,它将取消所有挂起的读取...如何处理这种情况?

【问题讨论】:

  • “boost deadline_timer 取消挂起的异步操作”——你为什么这么认为?
  • 你的意思是deadline_timer::cancel()成员函数吗?它仅取消与计时器相关的异步操作(由async_wait 发出)。
  • 这是 boost 文档所说的:此函数设置到期时间。任何挂起的异步等待操作都将被取消。每个取消操作的处理程序将使用 boost::asio::error::operation_aborted 错误代码调用。

标签: c++ sockets boost timer


【解决方案1】:

deadline_timer::expires_from_now() 仅取消该特定对象的 pending operations,而不是使用该 io_service 的所有异步操作。

【讨论】:

  • @Ken 下次,至少要具体说明 what linewhat documentation page 告诉你这个。我从经验中知道这句话,但人们不应该去寻找它。这是你的问题。你必须让它发挥作用。
猜你喜欢
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 2016-03-05
相关资源
最近更新 更多