epollet

    2熱度

    1回答

    從this question我知道我可以撥打epoll_ctl(2)而另一個線程阻止epoll_wait(2)。我仍然有一個問題。 當使用epoll和EPOLLONESHOT標誌時,只有一個事件被觸發,並且必須使用epoll_ctl(2)來重新組合fd。這是必要的,所以只有一個線程 將從fd中讀取並適當地處理結果。 以下是有點可視化我認爲問題的一個時間表: Thread1: Thread

    2熱度

    1回答

    人的epoll: The suggested way to use epoll as an edge-triggered (EPOLLET) interface is as follows: i with nonblocking file descriptors; and ii by waiting for an event only after read(2) or writ

    2熱度

    3回答

    epoll手冊頁說,如果沒有讀取完成,使用EPOLLET(邊緣觸發)註冊的fd不應該通知兩次EPOLLIN。 因此,在EPOLLIN之後,您需要在epoll_wait能夠在新數據上返回新的EPOLLIN之前清空緩衝區。 但是,我遇到了這種方法的問題,因爲我看到重複EPOLLIN事件未觸及的fds。 這是strace輸出,0x200是EPOLLRDHUP,它尚未在我的glibc頭文件中定義,但在內核

    1熱度

    1回答

    這是一個關於這個答案的問題:https://stackoverflow.com/a/14241095/2332808(會評論它,但新創建的帳戶顯然不能,對於噪音感到遺憾,epollet/multithreading上的資源很難找到.. 。) 它建議使用epoll的,如下所示: epoll_ctl()以激活通知(並且如果使用EPOLLONESHOT激活)。 系統輸入:在一個循環中read()/rec