История изменений
Исправление 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 сегменты, в лучшем случае бывало два сообщения.