Boost C++ 库

……是世界上最受推崇、设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

basic_raw_socket::cancel (2 个重载中的 1 个) - Boost C++ 函数库
PrevUpHomeNext

继承自 basic_socket。

取消与套接字关联的所有异步操作。

void cancel();

此函数将导致所有挂起的异步连接、发送和接收操作立即完成,并且取消的操作的处理程序将接收到 boost::asio::error::operation_aborted 错误。

异常

boost::system::system_error

失败时抛出。

备注

在 Windows XP、Windows Server 2003 以及更早版本的 Windows 上运行时,除非定义了 BOOST_ASIO_ENABLE_CANCELIO,否则对 cancel() 的调用总是会因 boost::asio::error::operation_not_supported 错误而失败。然而,CancelIo 函数在使用前应考虑两个问题

  • 它只会取消在当前线程中发起的异步操作。
  • 它可能看似成功完成,但操作系统可能会静默忽略取消未完成操作的请求。它是否有效似乎取决于安装的驱动程序。

为了实现可移植的取消,请考虑使用以下替代方法之一

  • 通过定义 BOOST_ASIO_DISABLE_IOCP 来禁用 asio 的 I/O 完成端口后端。
  • 使用 close() 函数可同时取消挂起的操作并关闭套接字。

在 Windows Vista、Windows Server 2008 及更高版本上运行时,将始终使用 CancelIoEx 函数。此函数没有上述问题。


PrevUpHomeNext