問題タブ [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 投票する
3 に答える
8839 参照

c++ - V8 で C++ コールバックから Javascript 関数を呼び出す

C++ コールバックが呼び出されたときに登録済みの JS 関数を呼び出そうとしていますが、スコープの問題であると思われるセグメンテーション違反が発生しています。

イベントが発生すると、次のメソッドが呼び出されます。これはおそらく、V8 が JS を実行している別のスレッドで発生すると想定しています。

これにより、セグメンテーション違反が発生します: 11. addEventListener() から Persistent への参照を使用してコールバック関数を直接呼び出すと、関数が正しく実行されることに注意してください。

ロッカーまたはアイソレートが必要だと思いますか? また、libuv の uv_queue_work() がこれを解決できるように見えますが、スレッドを開始していないため、どのように使用するかわかりません。

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

google-chrome-extension - libuv を使用してファイルの変更を監視する

特定のフォルダーの変更を監視し、ブラウザーの CSS/JS/画像ファイルを更新/更新する開発者ツール用の Chrome 拡張機能を構築したいと考えています。

すでに同様のアプローチがあります:

http://tin.cr

Tin.cr は、サンドボックス化されておらず、セキュリティ上の問題がある NPAPI を使用しているため、会社のポリシーに厳しい規則がある開発環境 (特に金融業界) では使用できません。

もう 1 つの方法は、NaCl (サンドボックス化された Chrome のネイティブ クライアント) を使用することです。

私は C の知識がほとんどないフロントエンド開発者なので、助けが必要です。

libuvでファイルの変更を監視/監視するにはどうすればよいですか? 誰かがコード スニペットを提供できれば、非常にありがたいです。

ドキュメントから私が理解していることから、libuvは拡張機能がクロスプラットフォームで動作することを可能にします.私は間違っていますか?

ありがとう

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

c++ - libuvスレッドは安全ですか?

libuv実行ループ専用の新しいスレッドを作成しました。スレッド関数は次のようになります。

refカウンターのインクリメントにより、スレッドは存続し、libuvイベントを処理できる状態に保たれます。uv_unrefメインスレッドで実行することにより、実行ループを終了させ、スレッドを終了させることができるようにしたいと考えています。

ただし、uv_refソースコードを調べたところ、同時アクセス中に参照カウンター変数へのアクセスが同期されるという保証はありませんでした。さらに、実行ループ中にオペレーティングシステムへの制御を放棄するためのyield呼び出しは見られませんでした。つまり、プログラムは他のプロセスとうまく連携しません。

これにより、私はlibuvを正しい方法で使用していないと信じるようになります。誰かが私が間違っていることを説明できれば、それは素晴らしいことです!

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

c++ - Node.jsアドオンタイマーコンテキスト

libuvタイマーメソッドはここに記載されており、Node.jsアドオンが定期的にコールバックを受信して​​任意の処理を実行する方法を提供します。

ここで、コールバックはプロトタイプを使用したタイムアウトメソッドです。

タイマーコールバックプロシージャに、できればvoid *の形式でコンテキストを提供するにはどうすればよいですか?

0 投票する
0 に答える
398 参照

node.js - node.js 内の ImageMagick がクラッシュするのはなぜですか?

ImageMagick でコンパイルされた node.js、node-vips、libvips を使用して、画像の変換とサイズ変更を行っています。2 つ以上の画像のサイズを変更しようとすると、セグメンテーション違反が発生し、アサーションが失敗します。

私は非常に多くの異なるクラッシュを経験しており、どこから始めればよいかわかりません。libvips 7.26.8 から始めましたが、7.30.7 も試しました。これは、かなり標準的でクリーンなubuntuボックスで、ソースからコンパイルされたノードv0.8.17を使用しています。

多くの場合、最初の 2 つのエラーのいずれかが表示されます。つまり、スタック トレースがありません。これらはすべて、6 枚ほどの画像のサイズを変更しようとしたときに発生しました。エラーなしですべて成功することもありますが、通常は、最初の 1 つまたは 2 つの画像のサイズが変更された後にエラーが発生します。

これをデバッグするにはどうすればよいですか?

node-vips プラグインの単体テストには、次のようなコメントがあります。

libeio から呼び出されたときに imagemagick がクラッシュするため、vips が imagemagick サポート付きでコンパイルされている場合、このテストはクラッシュします。

どうしてこれなの?これはまだ本当ですか?ImageMagick は完全にスレッドセーフだと思っていましたが、libeio/libuv から呼び出すのが安全ではないのはなぜですか?

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

c++ - libuvはuv_listen()でメモリリークを引き起こしますか?

libuvを使用する小さなプログラムをテストします。

プログラムのデバッグ出力にメモリリークが表示されます。

調子

libuvバージョン

  • os:Windows 7.0
  • コンパイラ:vs2010

私のテストコード

結果

内部リークの場所

コールスタック

コード

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

c - libuv で子プロセスの stdout をキャプチャする

libuvを使用しています。http://nikhilm.github.com/uvbook/processes.htmlを読みましたが、子プロセスの stdout をキャプチャして親で使用できるようにする方法がまだわかりません (ただし、親の stdin の代わりにはなりません) )。

私のコードは現在:

ダミー.c:

私は libuv のパイプのポイントをまだよく理解していないというしつこい気持ちがあります。

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

c++ - GCC-型宣言の正確な場所

libuvライブラリ(Cコード)に依存するC++コードがあります。セグメンテーション違反のためにクラッシュしています。問題を絞り込みました:libuvstruct statfromを使用し<sys/stat.h>ます。この構造体のサイズをコードに出力すると、次のようになります。

88と表示されます。libuvライブラリで同じものを印刷すると、96と表示されます。これがセグメンテーション違反の原因です。私はここで少し立ち往生しています。型宣言の正確な場所を見つけるにはどうすればよいですか?この問題を解決する他のアプローチはありますか?

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

libuv - libuv を正しく起動して実行し、それを使用してプログラムをコンパイルできるようにする

プロジェクトで libuv を使用しようとしています。私の最初のステップは、コンピューターに libuv をインストールして使用できるようにすることです。Mac OS X バージョン 10.6.8 を使用しています。zipファイルをダウンロードして解凍しました。彼らのサイトの説明では、make コマンドを使用してライブラリをビルドするように単純に書かれています。これを行うと、libuv.a ファイルが作成されます。コード ファイルに #include があります。実際、この時点では、彼らの紹介ペーパーで提供されているサンプル プログラムをコンパイルして実行しようとしているだけです。http://nikhilm.github.com/uvbook/basics.html . 友人の助けを借りて、make run-test を実行すると libuv.dylib が作成され、LD_LIBRARY_PATH=../deps/libuv-master ./testEventLoop を設定している限り、プログラムがコンパイルおよび実行されることがわかりました。

私はバージョン3.81を作りました。私のプロジェクトは、2 つのディレクトリ deps と src を持つ echo というフォルダーにあります。すべてのサブファイルを含む、抽出された libuv ファイルは dep 内にあります。test.c ファイルと私の make ファイルは src フォルダーにあります。

サードパーティのライブラリを使用したのはこれが初めてで、壁に頭をぶつけているようです。特にサードパーティのライブラリと libuv を使用して、ネット上で見つけることができるすべてのものを見てきました。libuvの makefile と他のいくつかのプロジェクトの make ファイルlibuv を使用している web。

これらのプロジェクトは非常に大きいため、この小さなことを掘り下げるのに非常に苦労しています。サードパーティのライブラリで助けが必要な人が他にもいるはずです。私は非常に近づいているように感じますが、何かを得ていないだけです.

含めるべき情報を省略した場合はお知らせください。質問を編集します。

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

javascript - node.js の内部非同期 I/O メカニズムに関する混乱

  1. node.js が内部的に libeio を使用して、*nix プラットフォームでスレッド プールを使用して非同期ファイルI/O を実行することを知りました。
  2. 非同期ネットワークI/O はどうですか? それはlibevによって行われますか?スレッドプールもありますか?
  3. 内部にスレッド プールがある場合、従来のリクエストごとに 1 スレッドのモデルよりも効率的である可能性はありますか? また、I/O 要求ごとに 1 つのスレッドですか?
  4. そして、窓のメカニズムは何ですか?IOCP によって行われ、カーネル レベルのスレッド プールがあることは知っていますよね?
  5. Windows IOCP のようなネイティブの完全な AIO メカニズムがまだ Linux にないのはなぜですか? 将来的にはありますか?

Changchang の回答に従って更新します。

  1. @changchang が提供したソース コードを簡単に確認したところ、デフォルトのスレッド プール サイズはUV_THREADPOOL_SIZEでリセットできることがわかりました。
  2. また、getaddrinfo がこのスレッド プールを使用していることがわかりました。fs 以外に他にあるでしょうか。また、すべての同期ジョブがこのスレッド プールで実行される場合、既定のサイズ '4' で十分ですか?
  3. 私の理解では、node.js プロセスには 6 つの基本的なスレッドがあります: 1 つの V8 スレッド (ユーザー JavaScript コードが実行されるイベント ループ)、1 つの libuv イベント ループ、およびスレッド プールに 4 つですよね?
  4. そして、シェル(Ubuntu)でこれらのスレッドを確認するにはどうすればよいですか? ps -eLf |を使用します。grep ノード | grep -v grep では次の 2 つしか表示されませんでした。

    ルート 16148 7492 16148 0 2 20:43 pts/26 00:00:00 ./bin/node /home/aaron/workspace/test.js
    ルート 16148 7492 16149 0 2 20:43 pts/26 00:00:00 . /bin/node /home/aaron/workspace/test.js