問題タブ [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でioウォッチャーとタイマーウォッチをロックする
libev で、イベントをキャッチするために io ウォッチャーを初期化しました。このイベントにより、特定の値がキャッシュに保存されます。10秒ごとに実行され、キャッシュ値を読み取る別のタイマーウォッチャーがあります。そのような場合、競合状態があると思います。2 つの異なる libev ウォッチャーでロックを使用する必要がありますか、または libev がそれを処理します。
例えば:
ここでは、サーバー イベントを受け入れるように io ウォッチャーをループして初期化し、タイマー ウォッチャーを 10 秒ごとにキャッシュを調べるようにしています。このような場合、競合状態を自分で処理する必要がありますか、それとも 2 つのウォッチャー io とタイマーの実行時間は libev によって管理されますか?
fork - 子で ev_loop_fork を呼び出さなかったらどうなるか
子でev_loop_forkを呼び出さなければ、子のウォッチャーはトリガーされないと思いました。
これは私のコードです。EVBACKEND_EPOLLおよびEVFLAG_NOENVフラグを使用して ev_loop をビルドします。
したがって、EVFLAG_FORKCHECKフラグはありません。
次に、子のev_loop_fork呼び出しにコメントを付けます。
すべてがうまくいけば、子はタイムアウトコールバック関数をトリガーしないと思いました。
しかし、実際には、出力は次のようになります。
$4980 フォーク 4981
$ 4980 でタイムアウト
$ 4981 でタイムアウト
ウォッチャーはまだ子でトリガーされているようで、呼び出しev_loop_forkと同じように動作しました。
それで、問題は何ですか、ありがとう。
node.js - nodejsで使用されるlibevでev_timerがどのように実装されていますか
nodejs の setTimeout は、C 言語ライブラリ libev ev_timer で実装されています。ev_timer はどのように機能しますか?
ポーリングを使用して実装されていますか? タイムアウトを 30 秒に設定した場合、保留中のタイムアウトをミリ秒ごとにチェックするプロセスはありますか?
objective-c - Xcode: libev.a 静的ライブラリのリンクに失敗し、dylib エラーが表示される
私は OS X アプリケーションに取り組んでおり、非同期 I/O ライブラリとして libev を使用する予定です。
まず、公式サイトから最新の libev パッケージ ファイルをダウンロードし、展開します。
次に、include/ev.hおよび.libs/libev.aファイルを xcode プロジェクトに追加します。Xcode は libev.a を次のような新しいフレームワークとして認識しました。
しかし、アプリケーションを実行すると、エラーが発生しました:
これらのメッセージはどういう意味ですか? .a ファイルを追加しました。
このように libev.a ライブラリを追加するのは正しかったでしょうか? そうでない場合、静的ライブラリとしてlibevをリンクするにはどうすればよいですか?
よろしくお願いします!
c - libev ループは、アイドル時に CPU の 99% を使用します
libev I/O ループとタイマー ループを実行するプログラムがあります。char 配列が 7000 文字に達するか、タイマー ループが 10 秒に達すると、localhost で実行されているサービスを JSON POST に送信します。I/O ループが原因で、プログラムがアイドル状態のときにほぼ 100% の CPU を使用しています。
このプログラムには、1 または 0 のいずれかの argv が必要です。
- 1 を指定すると、プログラムは 1 行だけ処理して終了します。
- 0 を指定すると、入力待ちになります。
エラーは、0 を渡して入力を待機させた場合にのみ発生します。
スレッド バック トレースとスタックの出力は次のとおりです。
そのため、I/O ウォッチャーは最初のイベントの後に連続して I/O イベントを取得しているように見えます。最初のイベントを適切に待機しますが、その後はほとんどの CPU を消費します。私はこのように使用しています:
おそらくパイプがこの状態を引き起こしていますか?
そこで、単純な libev I/O ウォッチャーであるテスト プログラムを作成しました。
I/O コールバックは、次のようにパイプで呼び出された場合、入力がない場合でも 1 秒間に数百回ヒットします。
これは、プロセスの stdout をプログラムにパイプするときにも発生します。
これが私の問題の根本原因です。
linux - alpine linux に EV cpan モジュールをインストールできない
これは debian では機能しますが、alpine はコンパイルを拒否します ( perl 5.20.3 && plenv
)。
インストールされたモジュール =>
cpanm ログから関連するエラーを説明するにはどうすればよいですか?