[英]How to wake up epoll_wait() before any event happened?
我有一個Connection
對象,它表示由epoll
管理的連接。 在事件上,將調用Connection::eventWrite()
或Connection::eventRead()
。 連接是持久的(始終存在)。
我需要從另一個線程通過該Connection
發送數據,但是不想直接訪問對象Connection
,因為我不想解決Connection
對象內部的多線程問題( Connection
是從epoll
-thread和“發送線程”訪問的) )。 相反,我想告訴epoll
-thread:“醒來並用Connection
做一些事情” epoll_wait()
應該返回,我的代碼將發現發生了CUSTOM EVENT
(例如,應調用某些函數,在其中將執行對Connection
的所需訪問(將數據發送給對象,調用writeEvent()
),然后epoll_wait()
將繼續。
存在哪種喚醒epoll_wait()
的解決方案,哪種解決方案更快? 現在,我想到創建一個pipe
(由相同的epoll
處理)並向其寫入字節1
。 還可以通過int
“ epollable”文件描述符表示什么IPC?
Epoll可以等待eventfd
。 就您而言,我將創建一個eventfd
然后觸發該事件。 我認為,這是最干凈的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.