問題タブ [node.js-addon]
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++ - V8 マルチスレッド機能
Node プラグインを作成していますが、C++ ワーカー スレッドから V8 関数オブジェクトを呼び出そうとすると問題が発生します。
私のプラグインは基本的に C++ std::thread を開始し、WaitForSingleOject() を使用して待機ループに入ります。これは、共有メモリのビットに書き込む別の C++ アプリ (X-Plane プラグイン) によってトリガーされます。Windows共有イベントが通知されたときにNodeプラグインを起動させ、ノードアプリから登録したJavaScript関数を呼び出そうとしています。これにより、X-Planeで発生したデータがNodeに戻されますそしてウェブの世界。
JavaScript 関数を登録して C++ から呼び出す方法をなんとか見つけましたが、メインの V8 スレッドでのみです。std::thread から関数を呼び出す方法が見つからないようです。
さまざまなアプローチ、Locker オブジェクト (変数の成功)、Persistent 関数 (機能しませんでした)、メインの分離オブジェクトの保存、分離の開始/終了などを試しましたが、コードが最終的に関数オブジェクトに到達した場合は有効ではありません。
さまざまなロッカーおよびロック解除オブジェクトを作成するかどうかに応じて、クラッシュからフリーズまで、さまざまな結果が得られます。
私は V8 にまったく慣れていないので、自分が正しいことをしているのかよくわかりません。問題のコードは次のとおりです。
誰かが助けてくれたら、私は永遠に感謝します!.
c++ - NodeJS アドオンで引数を double に変換する
引数 0 を long に変換して、dll 関数で使用したいと考えています。
関数は次のように定義されます。long function(long)
そして、呼び出しは次のようになります
次の警告が表示されました。
他の Node メソッドはありますか? 文字列に変換してから、C ネイティブ関数を介して long に変換すると、データが失われませんよね? (「データ損失」はあまり気にしませんが、警告を取り除きたいです)
c++ - v8::Context メモリ リーク
v8を使用してC++でnodejsモジュールを開発しようとしています。
ここにソースコードがあります。
そして、js コードでテストします。
すべての関数にはさまざまな問題があります。
TestContext1は正常に動作しますが、グローバル コンテキストにアクセスしてプロセスをシャットダウンします。
TestContext2はグローバル コンテキストにアクセスできませんが、メモリ リークが発生します。
私が必要とするすべて - メモリリークなしで分離されたコンテキストで js スクリプトを実行します。
vm.runInNewContext() に同じメモリ リークがあるため、ノード vm は機能しません。
誰かアイデアはありますか?
c++ - C++ ダブル バッファを Node Js に (直接) 渡す [Node JS : V8 c++ : Nan]
決定された double の配列を c++ から Node JS に戻そうとしています。私が今やっている方法は機能しますが、パフォーマンスが低下します。ダブル バッファを v8 配列に変換する必要があるためです。変換せずに double をノード JS に直接渡す方法はありますか? 使用を避けたい疑似変換コードを次に示します。
ノード js から、次のような double を取得します。
c++ - バイトのバッファリング - Node.js アドオン
Node.js から wav ストリームを受信したい (アドオンで)。次のように実装されます。
しかし、今はこの情報をバッファリングして、元の wav のコピーを作成したいと考えています。これまでのところ、新しいファイルにバイトを入力することはできません。
理由はわかりませんが、sizeof(buf)
常に小さすぎます。そのせいだと思います。
c++ - C++ NodeJS アドオンで V8::AddMemoryAllocationCallback メソッドを使用する方法
NodeJS C++ アドオンにV8::AddMemoryAllocationCallbackメソッドを使用しようとしています。そのメソッドを呼び出して、そのサイズの値を返したいです。次のコードを思いつきました。コールバックメソッドを呼び出していないようです。コードはgonative npm モジュールから取得されます。
しかし、memCallback
メソッドはトリガーを取得しませんでした。なんで?修正方法は?
次の C++ コードを使用して、V8 ライブラリにアクセスします。
node-gyp を使用して、コードをビルドして実行します (node-gyp rebuild && node index.js 1000 && ls /tmp/
現在のフォルダーから試してください)。
以下は JavaScript コードです。メモリを割り当てるためにいくつかの変数を作成しました。
現在の出力は;