問題タブ [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 - マクロ定義で do { } while (0) を使用する理由
重複の可能性:
C/C++ マクロに無意味な do/while ステートメントと if/else ステートメントがあるのはなぜですか?
以下のようなコードに出会いました:
著者がここを使用する理由を知りたいですdo { } while (0)
。これと違いはありますか?
ところで:コードはlibev、ev_local.hからのものです
c - Libev、関連するコールバックに引数を渡す方法
libev で引数が渡される状況に陥っています。
通常、libev は*receive_callback*のような関数でパッケージを受け取りますが、実際には、受け取ったパッケージに応じて特定のジョブを処理するために、相対*write_callback*をディスパッチする必要があります。例えば:
私の質問は、write_callbackX
recv_buff 内の特定のコンテンツも読み取る必要がある場合、recv_buff 引数を callbackX に渡すにはどうすればよいですか? ここで、グローバル変数の負担と醜さを負担する必要がありますか?
c - 新しいウォッチャーは古い未処理のイベントを見ることができますか?
私がソケットを持っていて、誰かが を介してまだ処理していないデータを送信した場合、そのソケットread()
のウォッチャーを作成ev_io
して実行すると、コールバックは起動しますか?
python - pyevでepoolするか、Pythonのstdlibから選択しますか?
select
誰かがPythonで、 Python stdlibからの標準的なバインディングに対するpyevの速度と有用性を測定しましたか?
pyevを使用する利点は何select
ですか?
pyevはC拡張機能によって構築されているため、移植性のあるソリューションではありません。PyPyでビルドしようとしましたが、箱から出してすぐに成功しませんでした。
だから私はそれを使う価値があるかどうか疑問に思っています。
geventが1.0バージョンで(そしてlibeventを使用する前に)libevを使用していることを私は知っています。彼らは本当にそれを必要としていますか?イベントループ以外の機能(libeventのDNSなど)は気にしません。
javascript - Nodejs イベント ループ
nodejsアーキテクチャには内部的に2つのイベントループがありますか?
- libev/libuv
- v8 JavaScript イベント ループ
I/O 要求で、ノードは libeio への要求をキューに入れ、libev を使用してイベントを介してデータの可用性を通知し、最終的にそれらのイベントはコールバックを使用して v8 イベントループによって処理されますか?
基本的に、libev と libeio は nodejs アーキテクチャにどのように統合されていますか?
nodejs の内部アーキテクチャを明確に示すために利用できるドキュメントはありますか?
android-ndk - Android ndk で libev をビルドする
Androidでlibev(libeventではなく)が本当に必要なプログラムをコーディングしています。私は何度もグーグルでlibevをビルドする方法を見つけましたが、成功しませんでした。Androidでlibevをビルドする方法を教えてください。ありがとうございます。
c++ - libev コールバックで std::list がクラッシュする
クライアントに送信される保留中のデータをチェックする libev 書き込みコールバック関数があります。保留中のデータ バッファーは次のようになります。
コールバック関数は、次の方法でコンテナーにデータがあるかどうかを確認します。
セグメンテーション違反でプログラムがクラッシュする
そして時々
2 番目のケースでは、empty() は false を返しますが、デバッガーは、そのリストにはデータ メンバーがありません
別のスレッドで実行されます(バッファは同じスレッドから読み書きされます)追加のスレッドをまったく開始せずにこれをメインスレッドに移動しようとしましたが、同じ効果がありました。
OS は Ubuntu 12.04、コンパイラは g++ 4.6 です。私のプロジェクトでは c++0x も有効になっています。
c++ - ev_default_forkに関するlibevのフラグ
私は学んでいlibev
ます。ev_default_fork
しかし、私はの旗について理解していませんev_loop
。これは、実行に近い問題ですか?旗のようにFD_CLOEXEC fcntl()
?フラグを設定する必要があるときは?このフラグが必要なのはどちらの場合ですか?これはドキュメントの説明です:
この関数は、後続のev_loop反復で、カーネル状態が1つあるバックエンドのカーネル状態を再初期化するフラグを設定します。名前にもかかわらず、いつでも呼び出すことができますが、子プロセス(または子と親の両方)でforkした後、最も意味がありますが、これもほとんど意味がありません。libevfunctionを使用する前に、子で呼び出す必要があります。これは、次のev_loopの反復でのみ有効になります。
一方、子でイベントライブラリを使用する場合にのみ、子プロセスでこの関数を呼び出す必要があります。fork + execだけの場合は、呼び出す必要はまったくありません。
関数自体は非常に高速であり、フォークの後で念のために呼び出すことは通常問題ではありません。これを簡単にするために、関数はpthread_atforkの呼び出しに完全に適合します。pthread_atfork(0、0、ev_default_fork);
httpclient - libevを使用した非同期HttpClient
libebb(http://tinyclouds.org/libebb/)とlibevを使用してWebサーバーを作成しています。libevイベントループを使用する非同期httpclientを探しています。
Http 1.1(パイプライン、キープアライブなど)をサポートしたいと思います。
これがばかげた質問ではないことを願っています。
c - ev_loopはlibevで宣言されていますか?
私はlibevを研究していますが、ev_loopはlibevの非常に重要なコンポーネントです。しかし、libevのソースコードを検索したところ、structev_loopの定義が見つかりませんでした。
では、ev_loopはどのように見えるべきでしょうか?