нужен обработка асинхронной I/Oасинхронный ввод/вывод Linux
План использование асинхронного ввод/вывода через ОАП * вызовы на Linux
Ситуация:
Я открыл сокет с AF_INET и SOCK_STREAM флаги (TCP) имеют высокий предел водяной знак для посылаемого буфера хотят писать в сокет асинхронно, и когда отправить переполнение буфера, хочет отсоединить разъем
Итак, у меня есть вопросы:
Когда я сделал асинхронной вызов aio_write на TCP сокет, когда завершение ввода/вывода приходит - когда буфер выписана в буфер сокета или доставки подтверждается? Как я могу управлять этим поведением?
Как лучше справиться с этим с lio_listio методами
С уважением, Andrew
из интереса вы посмотрели на форсирование asio? – 111111
Не уверен в Linux. В Windows MSDN: «Успешное завершение WSASend не означает, что данные были успешно доставлены». TBH, я был удивлен тем, что - если данные не были успешно доставлены, возможно, это должно быть возмущено. Если ядро, драйвер и т. Д. Возвращают буферы, которые не были выделены, то они должны хранить копии данных, поэтому теряют преимущество «без копирования» в очереди на загрузку пользовательских буферов: (( –
@MartinJames: t гарантировать успешное завершение * с использованием возвращаемого значения функции 'WSASend()'. Подождите, пока соответствующее уведомление (обратный вызов, уведомление о завершении ввода-вывода и т. д.) не получит фактический результат передачи. Это не означает, что вы можете Не используйте no-copy, вам просто нужно дождаться завершения передачи до повторного использования этого конкретного буфера. –