Re: Как правильно предупредить WSAENOBUFS при WSASend на IOCP TCP
От: Kubyshev Andrey  
Дата: 06.10.13 01:10
Оценка:
Здравствуйте, v2, Вы писали:

v2>Если я правильно понимаю, то, обычно, перед очередным WSASend на IOCP можно не ждать завершения предыдущего WSASend.

v2> В таком случаи система перекладывает данные к себе, меня по-быстрому отпускает, а сама потихоньку отправляет данные.

А насколько я понимаю она не перекладывает себе данные. если ты их разрушишь до того как она пошлет, то будет ошибка.
У тебя уже есть IOCP. Тогда делается так, в WSAsend передается не overlapped а твоя структура большего размера в котором только начало overlapped.
Когда wsasend произойдет, ты получишь указатель на свою структуру (он же на overlapped). Исходя из нее, поймешь какие буфера посланы и что можно освобождать.
Очень удобно в одном потоке создаешь буферы и в сенд, в другом получаешь completition и освобождаешь (или складываешь в пустые)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.