Наследовано от basic_socket.
Отменить все асинхронные операции, связанные с розеткой.
boost::system::error_code cancel(
boost::system::error_code & ec);
Эта функция вызывает все выдающиеся асинхронные соединения, отправку и получение операций, чтобы закончить немедленно, и обработчики для отмененных операций будут переданы boost::asio::ror::operation_aborted
ошибка.
- ec
Установить, чтобы указать, какие ошибки произошли, если таковые имеются.
Призывы к канцелу()
всегда потерпят неудачу с boost::asio::error::operation_not_supported
при запуске на Windows XP, Windows Server 2003 и более ранних версиях Windows, если не определено BOOST_ASIO_ENABLE_CANCELIO. Тем не менее, функция CancelIo имеет два вопроса, которые следует рассмотреть, прежде чем разрешить ее использование:
- Это только отменяет асинхронные операции, которые были начаты в текущем потоке.
- Он может быть завершен без ошибок, но запрос на отмену незавершенных операций может быть молча проигнорирован операционной системой. Работает он или нет, как представляется, зависит от установленных драйверов.
Для переносной отмены рассмотрите возможность использования одной из следующих альтернатив:
- Отключить резервную копию I/O, определив BOOST_ASIO_DISABLE_IOCP.
- Используйте функцию
Close()
, чтобы одновременно отменить выдающиеся операции и закрыть розетку.
При запуске на Windows Vista, Windows Server 2008, а затем, функция CancelIoEx всегда используется. Эта функция не имеет проблем, описанных выше.