私はlibevを学んでおり、私はこの質問に遭遇しました。できるだけ早く(現在実行中の機能ではない)何かを処理したいとします。たとえば、いくつかの大きな同期ジョブを複数のピースに分割して、他のコールバックが間に入るようにキューに入れたいとします。言い換えれば、タイムアウト0
でコールバックをスケジュールしたいと思っています。Libev:できるだけ早く呼び出されるようにコールバックをスケジュールする方法
最初の考えはev_timer
とタイムアウト0
を使用することです。最初の質問は、それは効率的ですか? libevは0
タイムアウトタイマーを効率的な "できるだけ早く呼び出す"ジョブに変換できますか?私はそうではないと思う。
私はlibev's docsを掘りしてきたと私は他のオプションが見つかりました:
それが人為的に準備またはアイドルウォッチャーを使用して、コールバックを呼び出す遅らせることができ
だから、アイドルウォッチャーであります
アイドルウォッチャーは、同じまたはより高い優先度の他のイベントが未処理の場合にイベントをトリガーします。
これはおそらく私が望むものではありません。準備をするウォッチャーはここで働くかもしれません。しかし、ウォッチャーをチェックしてみませんか?私が話している文脈には、何らかの犯罪的な違いはありますか?これらのドキュメントが示唆
他のオプションは次のとおりです。
以上こそこそ、既存の(停止)再利用ウォッチャーと保留キューにそれを押して:
ev_set_cb (watcher, callback);
ev_feed_event (EV_A_ watcher, 0);
しかし、それは希望常にウォッチャーを停止する必要があります。また私は先験的に、同時に複数の呼び出しを予定しているので、複数のウォッチャーを持っていなければならず、さらにいくつかの種類のリストを介して追跡し、必要なときに増やす必要があります。
私は正しい軌道に乗っていますか?これらのすべての可能性はありますか?