Может ли обработчик прерывания писать в FIFO - PullRequest
1 голос
/ 02 января 2011

У меня есть поток, ожидающий события, полученные в FIFO. Большинство событий - это события конфигурации, отправленные из другого потока в том же процессе. Я хотел бы, чтобы поток также мог обрабатывать события прерывания, если запись обработчика прерываний в FIFO возможна?

Любые другие предложения вместо использования FIFO приветствуются!

1 Ответ

0 голосов
/ 02 января 2011

Да, это возможно. Использование обработчиков прерываний является одним из более новых способов обработки асинхронного ввода-вывода.

Более типичный способ сделать это с помощью команды select, poll или Linux epoll.

Возможно, они более предпочтительны, потому что вместо того, чтобы «прерывать» код, когда событие доступно, вы можете обрабатывать события и возвращаться к циклу «опрос», чтобы получать больше событий, когда вы сделано с предыдущего мероприятия. Эти механизмы могут ожидать несколько различных файловых дескрипторов одновременно и возвращать, какой из них доступен.

Обработчик прерываний, вероятно, не то, что вы хотите делать - потому что вы не обязательно хотите прерываться при обработке одного события, чтобы знать, что другое готово. Если бы вы это сделали, вы, вероятно, все равно бы поставили в очередь запрос для дальнейшей обработки - именно с этого и начинаются опрос и эполл.

Если вы работаете под Linux, «epoll» является наиболее оптимальным. Если вы не (или хотите POSIX-совместимость), используйте «poll». «select» - это «старый» метод, который также не ставит в очередь запросы.

...