Как рекомендует Тобу, epoll - лучший выбор, и он работает лучше, чем select.Тем не менее, большинство из этих функций опроса будут указывать, что есть событие (данные доступны), если кто-то не читает.Если возможно, используйте следующую модель: Используйте epoll / select, чтобы отслеживать поступающие данные, которые пробуждают рабочий поток.Пусть рабочий поток решит, что делать с данными (один пакет, два или более), прежде чем фактически выполнять работу.
ИЛИ: Один поток Reader-N Рабочие потоки: будет использовать epoll для ожидания и чтения всехвходящие данные и отправить их в очередь соответствующего рабочего потока.Когда количество пакетов достигнет порогового значения, разбудите рабочий поток (используя семафор).