ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
339766 Топик полностью
fk0, легенда (09.07.2012 15:52 - 15:54, просмотров: 562) ответил =AlexD= на Об особенностях этих функций я помню ещё с тех времён, когда собирал ядро FreeBSD :-P, впрочем в линухе оно сделано так-же. Я те нагуглил простенькое описание (см. Как работает select()).
Мягко выражаясь, чушь. Любой желающий может посмотреть реализацию:  http://lxr.linux.n …3.4.4/fs/select.c#L500 -- строка 500, end_time=NULL, to=NULL, далее http://lxr.linux.n …3.4.4/fs/select.c#L232 и http://lxr.linux.n …kernel/hrtimer.c#L1826 и http://lxr.linux.n …kernel/hrtimer.c#L1755 -- здесь в 1772 строке expires==NULL и никакого "таймаута" как видно нет. Проснётся когда примет данные и выйдет из цикла (здесь: http://lxr.linux.n …3.4.4/fs/select.c#L423) Никакого цикла с "поллингом" нет, если не установлен таймаут. А если таймаут установлен, то проснётся по его окончании (если ранее данные не придут). Цикл (423 строка, последняя ссылка) в любом случае выполняется два раза: первый раз до poll_schedule_timeout, второй раз после (таймаут вышел или данные пришли). Никакого "поллинга" в цикле нет. У автора же "поллинг" ввиду описанной тут проблемы: http://caxapa.ru/339757.html (IPC и файлы имеют свои непересекающиеся интерфейсы для ожидания).
[ZX]