2014-01-29 2 views

답변

1

libevent와 같은 이벤트 루프 라이브러리는 최소 힙에 타이머를 유지하고 다음 타이머가 만료 될 때까지 select/epoll까지 시간 제한을 전달합니다. 타이머 추가 및 제거는이 시나리오에서 시스템 호출을 포함하지 않으며 최소 힙에 새로운 요소를 추가하기 만합니다.

timerfd을 사용하면 타이머를 만들 때 시스템 호출 (timerfd_create(), timerfd_settime()epoll_ctl())이 3 번 걸립니다. 그리고 만료 될 때마다 해당 파일 설명자에서 read()해야합니다.

timerfd은 이벤트 루프가없는 응용 프로그램에 유용 할 수 있지만 이미 괜찮은 이벤트 루프를 사용하는 응용 프로그램에서는 유용하지 않을 수 있습니다.

+0

muduo 프레임 워크는 이벤트 루프를 사용하지만 표준 네트워킹 프레임 워크로 사용되는지 확실하지 않습니다. 하지만 지금은 timerfd가 epoll/select 등에서는 쓸모가 없다는 말을 듣겠습니다. – Arunmu

관련 문제