Вам может понадобиться перестраивать значение тайм-аута каждый раз, когда вы переходите в select.Очевидно, что select может изменить это значение:
С здесь :
select() may update the timeout argument to indicate how much time was left.
Если оно изменяет его, и вы повторно используете его для ввода обратно в select, вы можетеполучить время ожидания вы ожидаете.Это man-страница linux, однако, ваш пробег может быть очень большим для Windows, особенно если на странице man указано:
функция glibc pselect () не изменяет свой аргумент timeout;это поведение требуется POSIX.1-2001
Отчасти умозрительный ответ, надеюсь, он полезен.Возможно, если вы отправите какой-нибудь код, мы сможем подтвердить / опровергнуть эту гипотезу.