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