簡體   English   中英

如何在任何事件發生之前喚醒epoll_wait()?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM