@Fen1xL

Зачем использовать системный вызов poll для ожидания события от драйвера?

Есть поток процесса, который в цикле вызывает read драйвера. Зачем использовать перед вызовом read функцию poll с таймаутом. Тем самым тратя некоторое время на "перезаряжание" функции poll, если произошел таймаут. Почему бы сразу не блокировать поток вызовом read и не ждать пока данные будут доступны, тем самым не тратя драгоценные такты процессора (в голову приходит только один вариант, когда необходимо принудительно прихлопнуть поток и если использовать таймаут, то не требуется прерывать системный вызов, хотя если принудительно завершить поток, то ядро по идее само прервет системный вызов)? Так ли это, может что-то еще?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему бы сразу не блокировать поток вызовом read и не ждать пока данные будут доступны


Если поток только читает, то действительно, на первый взгляд необходимости в вызове poll не видно.

(в голову приходит только один вариант, когда необходимо принудительно прихлопнуть поток и если использовать таймаут, то не требуется прерывать системный вызов, хотя если принудительно завершить поток, то ядро по идее само прервет системный вызов)


Если системный вызов втыкается в ожидание в драйвере, то драйвер сам решает, прерываемо это ожидание или нет. Может быть драйвер реализует операцию poll с возможностью прерывания, а read -- без.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы