Очень важное примечание: select () будет не всегда уменьшать значение тайм-аута.
В общем случае, если select () не возвращается немедленно, оно будет уменьшать значение
Когда вызывается select (), , если данные уже ожидают , несмотря на то, что вызову select требуется немного времени для выполнения, тайм-аут не уменьшается .
Поэтому в загруженной системе это опасно использовать для измерения времени.Мы добавили обходной путь, который определял бы, когда выбор был запущен, и значение тайм-аута не уменьшалось, и в этом случае слегка уменьшал бы его вручную, так что тайм-аут все равно периодически достигал бы 0.