4

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

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

  1. 単一のスレッドでevent_baseを作成します。
    • このシングルスレッドセットアップイベントでは、それらをイベントベースに関連付けます。また、観察された各イベントのコールバックを登録します。
  2. 観察されたイベントが発生するとすぐに、他の(ワーカー)スレッドで登録されたコールバックを実行します。

libeventでこのようなs.thを行うことは可能ですか?または、複数のコアをサポートする他のアプローチはありますか?

どうもありがとうございます

4

2 に答える 2

7

スレッドプールのサポートが必要になります。2.0.xの時点では、Libeventには現在これらのいずれかが組み込まれていませんが、将来的に組み込まれる可能性があります。

あなたが調べたいと思うかもしれないいくつかの提案された拡張がありました。Mark Ellzeyは、libevhtpのスレッドプールに使用する「libevthr」というライブラリを持っています。libevhtpリポジトリにあります。Mark Heilyは、Libeventがlibpthread_workqueueを使用できるようにEV_PARALLELフラグを追加するパッチを提案しています。 こちらのlibevent-usersメーリングリストに掲載されました。

どちらもうまくいかない場合は、好きなワークキューの実装を選択し、Libeventコールバックを記述して、別のスレッドの実際のコールバックを自動的にキューに入れることで、自分でそれを行うことができます。

于 2012-02-16T03:48:37.020 に答える