Если скорость передачи данных в сокетах не достаточно высока (например, recv()
не будет работать <25% времени), использование <code>poll() или select()
почти всегда является лучшим выбором.
Современная операционная система будет интеллектуально блокировать операцию poll()
до тех пор, пока один из fds в наборе не будет готов (ядро будет блокировать поток на наборе fds, пробуждая его только тогда, когда к этому файлу обращаются ... в конечном счете, это происходит намного больше, чем необходимо, что приводит к некоторому ожиданию занятости, но это лучше, чем ничего), в то время как цикл recv()
всегда приводит к ожиданию занятости.