LINUX.ORG.RU

История изменений

Исправление Vlad-76, (текущая версия) :

Не блокирующий recv вызывал в бесконечном цикле с задержкой 1 мкс между вызовами, т.е. 70 раз за 70мкс. загрузка ядра процессора при этом 16%.

тайминги я проверял, один раз поймал задержку 140мкс, было «слеплено» два tcp сегмента. во всех остальных случаях 210 мкс.

Пробовал дополнительно перед recv вызывать - «используй просто ioctl(fd, FIONREAD, & count) получишь размер данных, нет данных сиди жди.»

Иногда проскакивало что на момент вызова ioctl в буфере сокета был сайз одного сообщения, но следом вызванный recv уже читал слепленные tcp сегменты, в лучшем случае бывало два сообщения.

Исходная версия Vlad-76, :

Не блокирующий recv вызывал в бесконечном цикле с задержкой 1 мкс между вызовами, т.е. 70 раз за 70мкс.

тайминги я проверял, один раз поймал задержку 140мкс, было «слеплено» два tcp сегмента. во всех остальных случаях 210 мкс.

Пробовал дополнительно перед recv вызывать - «используй просто ioctl(fd, FIONREAD, & count) получишь размер данных, нет данных сиди жди.»

Иногда проскакивало что на момент вызова ioctl в буфере сокета был сайз одного сообщения, но следом вызванный recv уже читал слепленные tcp сегменты, в лучшем случае бывало два сообщения.