1

このマルチスレッドアプリには、スレッドごとにループがあり、スレッドごとに2つのペアのbuffereventがあり、それらとメインスレッドの間でデータを送受信します。

これは理論的には。実際には、bufferevent_pair_new()は正常に戻りますが、使用可能な記述子のない2つのbufferevent構造が作成されるため、それらを使用してbufferevent_getfd()を呼び出すと、両方に対して-1が返されます。

もちろん、以前に他のイベントを追加せずにそれらをイベントループにアタッチしようとすると、スレッドが返され、「イベントのないループ」エラーが発生します。

Torで似たようなものを見ました(スレッド間で通信するためのペアのbufferevents)。私はそれを正しくやっていますか?他に何か必要ですか?

4

1 に答える 1

0

これは古い質問であることは知っていますが、たまたま他の情報を探しているときに答えを見つけたので、誰かがまだ必要な場合に備えてここに投稿すると思いました. 元の答えはここにありましたhttp://archives.seul.org/libevent/users/Jul-2011/msg00009.html

削除された場合でも、要約します。

ペア バッファー イベントには内部イベントがないため、イベント ループがイベント ペンディング ステータスに達してループが終了するのを停止しません。与えられた回避策は、何もしないタイマー イベントを追加することでした。ただし、ループが終了しないようにします。ペアのバッファイベントがループの終了を防ぐように修正する可能性がありましたが、それが行われたかどうかはわかりません。上にリンクされた通信は、元の投稿と同じ日付で、別のリソースを介した OP への応答でさえあった可能性があります。

于 2013-04-26T16:03:35.743 に答える