問題タブ [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.
libuv - libuvロギングのベストプラクティス?
私のプログラムには、ログ ファイルに (タイマーで) 定期的にフラッシュされる std::stringstream があります。フラッシングとタイマーは、デフォルトの実行ループにあります。
アプリの他の部分はその std::stringstream に追加するだけで、残りはタイマーが処理します。stringstream のサイズを (1 MB に) 制限しているので、ストリームが「満杯」の場合はメッセージをドロップします。
私はちょうど疑問に思っています、これはベストプラクティスです;
- パフォーマンス?メイン スレッドでこの IO を処理しても問題ありませんか? 私はもっとうまくやれるだろうか?
- 重大なエラー?問題は libuv の私の使用法にある可能性があります。これは、libuv ベースのロギングが中断されることを意味する可能性がありますか?
node.js はログをどのように処理しますか?
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
ライブラリでは発生しません。