2012-02-05 16 views
1

libevent2とそのマルチスレッドサポートに関するいくつか質問があります。Libeventマルチスレッドサポート

libeventは複数のスレッドをサポートしていますか? 私が達成したいのは次のようなものです:

  1. event_baseを1つのスレッドで作成します。
    • この単一のスレッド設定イベントで、それらをイベントベースに関連付けます。また、観測されたイベントごとにコールバックを登録します。
  2. イベントが発生するとすぐに、登録済みのコールバックを他の(ワーカー)スレッドで実行します。

libeventでこれを行うことは可能ですか?あるいは、複数のコアをサポートする他の方法はありますか?

ありがとうございました

+0

gcc chat.c -o chat -levent -lpthread -levent_threads 

とを質問/ 21677154/libevent-multithreading-to-handle-http-keep-alive-connections)だから私はあなたがどのように乗っているのだろうか?それはうまくいったのですか?落とし穴がありましたか?どんなフィードバックでも大歓迎です! – SlappyTheFish

答えて

7

スレッドプーリングをサポートする必要があります。 2.0.x以降、Libeventはこれらのうちの1つを現在組み込んでいませんが、将来的にはそうかもしれません。

あなたが調べたいと思われる拡張機能がいくつかあります。 Mark Ellzeyには、libevhtpのスレッドプールに使用するlibevthrというライブラリがあります。 it in the libevhtp repositoryが見つかります。 Mark Heilyは、Libeventがlibpthread_workqueueを使用できるようにEV_PARALLELフラグを追加するための提案パッチを提供しています。 It appeared on the libevent-users mailing list here.

あなたのためにそれらの作品うちのどちらも場合は、あなたが好きなすべての作業キューの実装を選ぶと、自動的に別のスレッドのためのあなたの本当のコールバックをキューにLibeventコールバックを書き込むことによって、それを自分で行うことができます。

+1

Hey Nick、もし私がevthread_use_pthreads()を追加したら、私のコードに私はエラーが表示されます: 'evthread_use_pthreads 'への未定義の参照 私は次のコマンドを使用してコンパイルする:" gcc chat.c -o chat -levent -lpthread "と私は何か他のものをリンクする必要があると思うが、何を知っている。ここでお手伝いできますか?ありがとう。 –

7

あなたがevthread_use_pthreads();を追加する場合は、-levent_pthreads

例持っている必要があります:私は似たような(http://stackoverflow.com/をやってと思ってい

$> ls /usr/lib/libevent*.a 
/usr/lib/libevent.a /usr/lib/libevent_core.a /usr/lib/libevent_extra.a /usr/lib/libevent_openssl.a /usr/lib/libevent_pthreads.a 
関連する問題