2009-12-22 7 views
0

인사말,설문 조사/epoll에 호환 타이머

리눅스 설문 조사/epoll 파일의 API와 함께 타이머를 사용하는 방법이 있는지 궁금 해서요. 이미 epoll을 사용하고 있으며 타이머를 내 대기열의 다른 epoll 이벤트로 만들면 기존 코드와 매우 잘 통합됩니다.

가능한 방법은 단지 가상의 예로서

echo 400;now > /dev/timer ; cat /dev/timer ; # outputs after 400ms "now" 

처럼, 어쩌면 파일 기반 타이머입니다. 이게 뭔가요? 또는 epoll API와 통합 할 수있는 다른 방법이 있습니까?

--Marenz

답변

5

epoll을 사용하여 타이머를 수행하는 것은 간단합니다. epoll_wait도 timeout 매개 변수를 사용하기 때문입니다. 모든 타이머를 우선 순위 대기열에 넣고 지금부터 첫 번째 시간까지의 시간 제한을 설정 한 다음 해당 타이머에 대한 이벤트를 발생시킵니다.

비슷한 것을 제공하는 libevent를 사용하십시오.

예 정말로 원한다면 timerfd()를 사용해야하지만 필요는 없습니다.

+1

정확히 내가 원하는 방식이 아니지만 여전히 작동합니다. 덕분에 . - 만렌 – Marenz

+0

사실, 타이머 fd는 내가 원하는 것입니다. 너무 나쁘다는 것은 리눅스에만 해당됩니다. – Marenz

0

watch -n 0.4 명령이이 상황에서 어떤 사용겠습니까?

+0

나는 그렇게 생각하지 않는다./dev/timer는 filedescriptor를 사용하여 열 수 있기 때문에 epoll을 사용하여 파일 설명자를 관리하므로 다른 프로세스를 실행하지 않아도 작동합니다. - 마렌즈 – Marenz