問題タブ [libev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 複数のスレッドでlibevを使用する
TCP接続の処理に複数のスレッドでlibevを使用したいと思います。私がしたいのは:
メインスレッドは着信接続をリッスンし、接続を受け入れて、接続をワーカースレッドに転送します。
ワーカースレッドのプールがあります。スレッドの数は、CPUの数によって異なります。各ワーカースレッドにはイベントループがあります。ワーカースレッドは、tcpソケットに書き込むことができるかどうか、または何かを読み取ることができるかどうかをリッスンします。
libevのドキュメントを調べたところ、これはlibevで実行できることがわかりましたが、どのように実行する必要があるかについての例は見つかりません。
誰かが例を持っていますか?ev_loop_new()apiを使用する必要があると思います。ワーカースレッドとメインスレッドにはev_default_loop()を使用する必要がありますか?
よろしく
c - libev webserver 読み取りファイル
Cでlibevを使用して小さなWebサーバーを作成する場合、リアクターをブロックせずにファイルを提供する(開く、準備ができている、ソケットに書き込む)ための最良の戦略は何ですか?
一度にいくつかのブロックを読み取るようにいくつかの推奨事項がありますが、これが正しいアプローチであるかどうかはわかりません。
ありがとう、
c - libevを使用するソケット
Iamはlibevに基づいたソケットプログラムを作成しようとしています。https://github.com/coolaj86/libev-examples/blob/master/src/unix-echo-server.cに記載されているいくつかの例では、initに基づくコールバックを使用していることに気付きました。例えば、
私の質問は、予想される動作から来ています。たとえば、EV_READで読んだものはすべて、リンクリストに保存されています。読み取るパケットのフリーフローを取得し続けているとしましょう。EV_WRITEに入る機会はありますか?読んだものをすべて別のソケットに送信する必要があります。では、1回はEV_READで、2回目はEV_WRITEになるのでしょうか。言い換えれば、EV_WRITEはいつブロック解除されますか?または、EV_WRITEが呼び出されるようにEV_READをブロックする必要がありますか?誰かが私がこれを理解するのを手伝ってもらえますか?
c++ - libev を使用して C++ で非同期メソッドを作成する方法
libev を使用して C++ で非同期メソッドを作成しようとしています。必要に応じて、コールバック メソッドを引数として渡すことができます。
例えば
これtest()
は非同期メソッドであるため、実行が完了するprintf()
前に次のステートメントを実行する必要があります。test()
libev
この簡単な例に使用してみました:
この例では、printf
イベント ループが停止した後に が実行されます。この種の機能は libev を使用して可能ですか? 私はグーグルで検索しましたが、この種の必要性の例はありませんでした。
c++ - libev カスタム イベント
イベントベースのプログラミングに libev を使用しようとしています。しかし、次のようなlibevによって提供されるいくつかのイベントがありますEV_READ, EV_WRITE, EV_TIMER ..
それで、私自身のカスタムイベントを持つことは可能ですか?
たとえば、ソケットからのメッセージの連続フローがあり、そのメッセージ ストリーム内のメッセージのタイプのみに関心があります。だから、基本的には
ということで、こういうイベントに登録したい(そのif
条件だけは満たしている)。カスタムイベントですよね?このイベントを libev に指定するにはどうすればよいですか。
つまり、libev では次のように指定します。
自分のイベントを確認できるものは見当たりません。出来ますか ?
c++ - libev が fd ごとに 1 つ以上のウォッチャーに失敗する
ソケットごとに 2 つのウォッチャーを動作させることができないようです..以下のコードは実際にはまったく機能しませんが、これらの呼び出しを混同すると (たとえば、1 つのウォッチャーに対して init/set/start を呼び出し、次に他のウォッチャーを呼び出します)、私は1つのウォッチャーしか機能していません..ここでひどく欠けているものはありますか. ループとセットアップとは何の関係もないと思います...受け入れループ(デフォルトループ)が1つと、受け入れられた接続用のループが1つあります。私は両方を試し、accept ループで接続を受け入れた直後に以下のコードを実行し、ev_async_send(...) を介してこのコードを他の io ループから実行しました。結果は同じでした。また、1 つのウォッチャーに両方のイベントを設定することもできます。
ありがとうございました
libev - libev ev_io と ev_idle イベントを一緒に使用する
着信接続をリッスンすることに興味があり、アクティブな接続がない場合はバックグラウンド処理を実行したいと考えています。これらの両方が一緒にある例は見つかりませんでした。
私はこのようなことをしたい:
例の1つから:
この例では、アイドル イベントを追加する場所と、アイドル イベントをいつどこで開始および停止する必要があるので、メイン イベント ハンドラーに干渉せず、アイドル状態のときにのみ呼び出されるようにします。
ありがとう。