Отменить все асинхронные операции, связанные с розеткой.
void cancel();
Эта функция вызывает все выдающиеся асинхронные операции подключения, отправки и получения, чтобы закончить немедленно, и обработчики для отмененных операций будут переданыповышение:Азио:ошибка:Операция
Ошибка.
- boost::system::system_error
Выброшен на провал.
Звонки наотменяют[]
всегда терпят неудачу сповышением::asio::ошибка::операция_не_поддерживаемая
при запуске на Windows XP, Windows Server 2003 и более ранних версиях Windows, если не определен BOOST_ASIO_ENABLE_CANCELIO. Однако функция CancelIo имеет две проблемы, которые следует рассмотреть, прежде чем разрешить ее использование:
- Он отменит только асинхронные операции, которые были начаты в текущем потоке.
- Это может показаться полным без ошибок, но запрос на отмену незавершенных операций может молча игнорироваться операционной системой. Работает он или нет, зависит от установленных драйверов.
Для переносной отмены рассмотрите возможность использования одной из следующих альтернатив:
- Отключить порт завершения ввода/вывода Asio, определив BOOST_ASIO_DISABLE_IOCP.
- Используйте
().
функция одновременной отмены невыполненных операций и закрытия розетки.
При работе на Windows Vista, Windows Server 2008 и более поздней версии всегда используется функция CancelIoEx. Эта функция не имеет проблем, описанных выше.