Почему вызов select() имеет тайм-аут? Каковы разумные значения для него в общих сценариях?

Мне интересно значение тайм-аута в вызове POSIX select(). Я понимаю, почему может потребоваться значение 0 (для опроса дескрипторов файлов). Какие другие значения обычно используются и с какой целью?

1 ответ

Обратите внимание, что poll(2) часто лучше, чем select(2) для целей мультиплексирования (потому что FD_SETSIZE является сильным ограничением для самого высокого дескриптора файла).

Практический тайм-аут, который вы будете использовать, зависит от ситуации. Во многих средах GUI- виджетов вы знаете, что экран обновляется с частотой 50 или 60 Гц, поэтому вы, вероятно, установите соответствующее время ожидания (например, до 20 миллисекунд). Или вы знаете, что за мышью нужно следить не менее 10 раз в секунду и т. Д. На практике эти наборы инструментов также имеют тайм-ауты, поэтому poll или же select Тайм-аут вычисляется динамически в каждом цикле цикла событий. На веб-сервере время ожидания настраивается, и программа вычисляет poll тайм-аут соответственно.

На практике опрос (2) или выбор (2) часто превышает миллисекунду и, вероятно, менее нескольких десятков секунд. YMMV. Кстати, точное время ожидания часто не очень важно.

См. Также раздел " Ответы " на веб-странице Norvig's Teach Yourself Programing за десять лет (очень интересное чтение).

Другие вопросы по тегам