問題タブ [libuv]
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++ - libuv のソースについて質問がありますか?
最近、libuvのソースを読みました。QUEUE.h を読むときにいくつか質問があります
まず: 以下のマクロ定義:</p>
QUEUE_PREV(q) を次のように再定義できますか。
それらの違いは何ですか?
第二に: 私は以下のコードを試します:
結果はコンソールでも同じですが、なぜですか? 「*」は機能しませんか?? このコードはVS2013で書いています。
c++ - libuv + C++ セグメンテーション違反
libuv を使用して C++ でストリームのラッパーを作成していますが、segfault が発生し、その理由がわかりません。ストリーム クラス:
そして実装
メインファイルでこれを行います:
ただし、これを実行するとすぐに、uv_run
ステートメントでセグメンテーション違反が発生します。バックトレース:
しかし、メソッドに uv_run を入れると、問題Stream::Write
なく動作します。どうすればこれを修正できますか?
編集
スタックではなくヒープにパイプを割り当てるようになりましたが、それでもセグメンテーション違反が発生します。uv_pipe_t
ヘッダーをに変更しuv_pipe_t*
、実装は次のように変更されました。
GDB からのバックトレース:
c - libuv シンプル エコー クライアント
次のサンプル コードの UNIX パイプを使用して単純なエコー クライアントを開発しようとしています: https://github.com/nikhilm/uvbook/blob/master/code/pipe-echo-server/main.c
これは私のクライアントコードです:
しかし、実行するとすぐにセグメンテーション違反が発生します。サーバーから、プロセスが接続されたというメッセージが表示されます。GDB からのバックトレース:
node.js - 新しいイベントがキューに入れられていない場合、node.js アプリケーションはどのように実行し続けますか?
私の質問は、新しいイベントが存在しない場合でも、http サーバーのような node.js アプリケーションをどのように実行し続けるのですか?
新しいイベントがキューに入れられないと、libuv イベント ループが終了すると思いました。
イベントに登録されたイベントリスナーを使用した while(true) {} ループのようなものですか?
これが私の質問の簡単なコード例です:
ありがとう
編集: libuv io loop docから、各ループ反復の開始時にループが有効でなければならないことがわかっています。つまり、より多くのイベントが発生し、より多くのコールバックが実行されるように登録されます。
この例では、イベント リスナーが登録されていますが、次のループ反復の前にそれ以上イベントが起動されなかったため、プログラムは 1 つのイベントが処理された後に終了します。
ただし、この例では、タイマーがアクティブなため、プログラムは無期限に続行されます。
では、http サーバーの例でループ (アクティブ ハンドルと参照ハンドル) を維持しているのは何ですか?
libuv - マルチスレッド環境で uv_accept を使用するには?
の両方のパラメーター (サーバーとハンドル) がuv_accept
同じで必要であることがわかりましたuv_loop
。しかし、独自のサブスレッドで新しい接続ハンドルを作成したいと考えていますuv_loop
。私は何をすべきか?
python - Feedparser - TypeError('a float is required',)
複数のフィードを同時に解析するためにguv
andを使用しています。feedparser
以下は私のコードです:
ただし、次の出力が得られます。
を使用しても同様の問題Eventlet
がありますが、ネイティブの Python 3threading
ライブラリでは発生しません。
nginx - nginxのイベントループにイベントを登録することはできますか?
nginx
HTTP メッセージを受信し、それを解析してRedis
特定のキーの値をチェックインし、応答を返す に基づく Web サーバーが必要ですRedis
。
出来ますか?nginx
のループにイベントを登録することを提案する記事を調べました。
node.js - libuv: uv_setup_args 関数とは?
node.js のソース コードを読んでいるときに、これに出くわしました。
libuv docsの関数に関するドキュメントは、まるで存在しないかのように見つかりませんでした。また、node.js コードの他の場所で定義されているかどうかも確認しました。そうではありません。
誰かが私にそれが何をするのか教えてもらえますか? また、ドキュメントが存在する場合は、そのドキュメントを教えていただけますか?
c - 必須パラメーターなしの C 関数呼び出し
私は、libuv というライブラリの開発者によって提供されたこのソース コードを見てきました。一部のサンプル コードでは、関数を別の関数のパラメーターとして渡しますが、必要なパラメーターはどれも渡されません。パラメータはどのように入力されていますか? 私が見ている関数は uv_fs_open です。
ソースへのリンクは次のとおりです (関数コードについては、1000 行目あたりを参照してください): https://github.com/libuv/libuv/blob/202195c2f45ced200ccf880ff4502eee94f11ab5/src/unix/fs.c
サンプル コードは次のとおりです。
c++ - uv_loop_t.time は何を表していますか?
libuv の uv_loop_t には、「time」と呼ばれるプライベートな uint64 フィールドがあります。
それは何を表していますか?