Я недавно написал пул потоков на Java (требуется для моего класса параллельных вычислений, я знаю, что он встроен), и если вы напишите его правильно, он действительно довольно быстрый.
Одно огромное преимущество, если вы используете несколько потоков: у вас больше нет запросов на блокировку. Вы получите лучшее время отклика, потому что сможете обрабатывать несколько запросов одновременно.
Если на обработку, отправку или получение уходит довольно много времени, вам не нужен этот пакет, чтобы обязательно засорить ваши трубки.
С некоторым пулом потоков, вы бы просто сделали:
while(1){
select(fd_set...);
if (fd_isUserspace) {
submit_job(process_user_packet, fd);
} else { // kernel
submit_job(process_kernel_packet, fd);
}
} // while(1)
Где мы предполагаем, что submit_job имеет подпись
void submit_job(void (*func)(void *), void *args);
Так что каждый поток в пуле потоков может просто получить функцию и аргументы, с которыми он должен работать, и вызвать func (args);
Я бы не стал беспокоиться о стоимости отправки работы. Если обработка занимает больше 1 миллисекунды (возможно, даже в действительно хороших реализациях), тогда вы будете великолепны.