2016-11-01 6 views
0

epollによって管理される接続を表すConnectionオブジェクトがあります。イベントの場合、Connection::eventWrite()またはConnection::eventRead()が呼び出されます。接続は永続的です(常に存在します)。イベントが発生する前にepoll_wait()を起動するにはどうすればよいですか?

私は Connectionオブジェクト内のマルチスレッドの問題を解決したいいけないので( Connectionepoll -threadからからアクセスされ、別のスレッドからその Connectionを介してデータを送信する必要がありますが、直接オブジェクト Connectionにアクセスする必要はありません

"スレッドを送信する")。代わりに、私はepollスレッドに話したいと思う: "起床してConnectionで何かをする" - epoll_wait()が返され、私のコードでCUSTOM EVENTが発生していることが分かります(そして、例えば、いくつかの関数を呼び出す必要があります。 Connectionへのアクセスが(writeEvent()を呼び出して、オブジェクトへのデータ送信を割り当てる)に行われます、そしてepoll_wait() -loopが継続される。epoll_wait()を覚ますために存在し、どちらが速い?今のところ、私が来ているソリューションの

どのような種類pipe(同じepollで扱う)を作成し、1というバイトを書き込んでください。int "epollable"ファイル記述で表現できるその他のIPC r?

答えて

1

Epollはeventfdを待つことができます。あなたのケースでは、私はeventfdを作成し、このイベントをトリガーするでしょう。私はこれが一番クリーンな解決策だと思う。

関連する問題