2011-01-02 2 views
1

FIFO에서 수신 된 이벤트를 기다리는 스레드가 있습니다. 대부분의 이벤트는 동일한 프로세스의 다른 스레드에서 보내는 구성 이벤트입니다. 인터럽트 핸들러가 FIFO에 쓰는 것을 가능하게함으로써 스레드가 인터럽트 이벤트를 처리 할 수있게하고 싶습니다.인터럽트 처리기가 FIFO에 쓸 수 있습니까?

FIFO를 사용하는 대신 다른 제안을 환영합니다!

답변

0

예, 가능합니다. 인터럽트 핸들러를 사용하는 것은 비동기 I/O를 처리하는 새로운 방법 중 하나입니다.

more 대표적으로는 선택, 폴링 또는 Linux epoll 명령을 사용하는 것입니다.

이벤트가 사용 가능할 때 코드를 "중단"하기보다는 조금 더 선호하는 것 같습니다. 이벤트를 처리하고 "폴"루프로 돌아가서 일 때 더 많은 이벤트를 얻을 수 있습니다. 이전 이벤트. 이러한 메커니즘은 여러 파일 기술자를 동시에 기다렸다가 사용할 수있는 파일 디스크립터를 반환 할 수 있습니다.

인터럽트 처리기는 아마도 하나의 이벤트를 처리하는 동안 중단 될 필요가 없기 때문에 인터럽트 처리기가 원하는 작업이 아닐 수 있습니다. 그렇게했다면 어쨌든 나중에 처리하기 위해 요청을 대기열에 넣을 수 있습니다. 이는 설문 조사와 epoll과 정확히 일치합니다.

Linux를 사용하는 경우 "epoll"이 가장 적합합니다. 그렇지 않다면 (또는 POSIX 준수를 원한다면) "poll"을 사용하십시오. "select"는 "이전"방법이며 요청도 대기열에 넣지 않습니다.

관련 문제