當前場景是epoll_wait通過幾個fds和一個可能的傳入消息隊列,我想要在IO事件或新消息上執行epoll_wait下面的循環。
的方法,我知道:用非IO事件中斷epoll_wait,沒有信號
- 使用
time
毫秒超時和檢查隊列第一件事就是循環 - 使用self-pipe trick從消息時變得可用
- 中斷與標準信號系統調用的隊列代碼
- 使用epoll_pwait和完善之前的點
無上面貼了點滿足我enoug h,我想知道是否還有其他方法,我沒有找到。
的原因是:
- 信號是什麼,以避免對多線程代碼,並不十分可靠
- 超時一個刪除的epoll的部分利益,只有事件
- 自管伎倆看起來清醒目前最好的方法,但仍然太多的樣板
想法?
當只有一個線程正在等待epollfd時,我已經成功地使用了eventfd,但是多線程正在等待* same * epollfd? eventfd在這種情況下也很有用嗎?如果是這樣,怎麼樣? – 2015-02-16 10:33:41