問題タブ [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.

0 投票する
2 に答える
771 参照

libuv - libuvロギングのベストプラクティス?

私のプログラムには、ログ ファイルに (タイマーで) 定期的にフラッシュされる std::stringstream があります。フラッシングとタイマーは、デフォルトの実行ループにあります。

アプリの他の部分はその std::stringstream に追加するだけで、残りはタイマーが処理します。stringstream のサイズを (1 MB に) 制限しているので、ストリームが「満杯」の場合はメッセージをドロップします。

私はちょうど疑問に思っています、これはベストプラクティスです;

  • パフォーマンス?メイン スレッドでこの IO を処理しても問題ありませんか? 私はもっ​​とうまくやれるだろうか?
  • 重大なエラー?問題は libuv の私の使用法にある可能性があります。これは、libuv ベースのロギングが中断されることを意味する可能性がありますか?

node.js はログをどのように処理しますか?

0 投票する
1 に答える
184 参照

c++ - libuv のソースについて質問がありますか?

最近、libuvのソースを読みました。QUEUE.h を読むときにいくつか質問があります

まず: 以下のマクロ定義:</p>

QUEUE_PREV(q) を次のように再定義できますか。

それらの違いは何ですか?

第二に: 私は以下のコードを試します:

結果はコンソールでも同じですが、なぜですか? 「*」は機能しませんか?? このコードはVS2013で書いています。

0 投票する
1 に答える
1194 参照

c++ - libuv + C++ セグメンテーション違反

libuv を使用して C++ でストリームのラッパーを作成していますが、segfault が発生し、その理由がわかりません。ストリーム クラス:

そして実装

メインファイルでこれを行います:

ただし、これを実行するとすぐに、uv_runステートメントでセグメンテーション違反が発生します。バックトレース:

しかし、メソッドに uv_run を入れると、問題Stream::Writeなく動作します。どうすればこれを修正できますか?


編集

スタックではなくヒープにパイプを割り当てるようになりましたが、それでもセグメンテーション違反が発生します。uv_pipe_tヘッダーをに変更しuv_pipe_t*、実装は次のように変更されました。

GDB からのバックトレース:

0 投票する
2 に答える
4057 参照

c - libuv シンプル エコー クライアント

次のサンプル コードの UNIX パイプを使用して単純なエコー クライアントを開発しようとしています: https://github.com/nikhilm/uvbook/blob/master/code/pipe-echo-server/main.c

これは私のクライアントコードです:

しかし、実行するとすぐにセグメンテーション違反が発生します。サーバーから、プロセスが接続されたというメッセージが表示されます。GDB からのバックトレース:

0 投票する
1 に答える
971 参照

node.js - 新しいイベントがキューに入れられていない場合、node.js アプリケーションはどのように実行し続けますか?

私の質問は、新しいイベントが存在しない場合でも、http サーバーのような node.js アプリケーションをどのように実行し続けるのですか?

新しいイベントがキューに入れられないと、libuv イベント ループが終了すると思いました。

イベントに登録されたイベントリスナーを使用した while(true) {} ループのようなものですか?

これが私の質問の簡単なコード例です:

ありがとう

編集: libuv io loop docから、各ループ反復の開始時にループが有効でなければならないことがわかっています。つまり、より多くのイベントが発生し、より多くのコールバックが実行されるように登録されます。

この例では、イベント リスナーが登録されていますが、次のループ反復の前にそれ以上イベントが起動されなかったため、プログラムは 1 つのイベントが処理された後に終了します。

ただし、この例では、タイマーがアクティブなため、プログラムは無期限に続行されます。

では、http サーバーの例でループ (アクティブ ハンドルと参照ハンドル) を維持しているのは何ですか?

0 投票する
1 に答える
788 参照

libuv - マルチスレッド環境で uv_accept を使用するには?

の両方のパラメーター (サーバーとハンドル) がuv_accept同じで必要であることがわかりましたuv_loop。しかし、独自のサブスレッドで新しい接続ハンドルを作成したいと考えていますuv_loop。私は何をすべきか?

0 投票する
1 に答える
70 参照

python - Feedparser - TypeError('a float is required',)

複数のフィードを同時に解析するためにguvandを使用しています。feedparser以下は私のコードです:

ただし、次の出力が得られます。

を使用しても同様の問題Eventletがありますが、ネイティブの Python 3threadingライブラリでは発生しません。