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

c++ - ネイティブ C++ / nodejs アドオンで async コンストラクター/Factory-Call を実装する方法は?

私は C++ と node/v8 アドオンの開発にまったく慣れていません。

サードパーティの C ライブラリをラップしようとしています。一部の初期化関数は非常に長く実行され、これらの操作を非同期で実行したいと思います (libuv の助けを借りて)。

次のコードがあるとします。

createStructIn3rdPartyLib(&cStruct);libuv-library の助けを借りて実行したいです。

以下は私が思いついたものです。残念ながら、セグメンテーション違反が発生し、それが正しいアプローチであるかどうかはわかりません。私はすでに他のネイティブノードアドオンのソースを調べましたが、私の問題の解決策は見つかりませんでした. :(

どんなヒントでも大歓迎です。

ありがとうございました!!!

編集: node-ogg バインディング などの例をさらに読んだ後、私は自分のアプローチが間違った方向に進んでいるとますます考えています。おそらく、C/C++ 側ではずっと低いレベルにとどまり、javascript 側でオブジェクト機能を実装する必要があります。

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

c - ゲームサーバー用の uvlib

いくつかのバックグラウンド スレッドがあり、それらが IO 操作などを実行することはわかっています。その後、コールバックが呼び出されます。すべてのコールバックは 1 つのスレッドで呼び出されていますか (= 2 つのコールバックを同時に実行することはできません)? たとえば、uv_read_start( echo_read) に渡されるコールバックは、データがソケット接続に到達したときに呼び出される必要があります。常にメイン スレッドで呼び出され、それらのバックグラウンド スレッドはecho_readそのソケットからのデータのバッファリングにのみ使用されますか? でゲームサーバーを作成したいのですlibuvが、実際には、一度に処理されるゲームパケットは常に1つだけで、それ以上ではないことを確認する必要があります(そうしないと、多くの同期の問題が発生し、おそらく接地)。

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

libuv - libuv - 別のスレッドで実行されている tcp サーバーを停止する方法

たとえば、私は2 つのスレッドを持っています。サーバーをメインスレッド (スレッド 1) から停止したい。

スレッド 1: メイン プログラム

スレッド 2: TcpServer

libuv ライブラリから:

つまりuv_stop(tcp_server_loop)、メイン スレッドで呼び出し、tcpserver にイベントがないためにサーバー ループがブロックされた場合、サーバーは何らかのイベントが発生するまでループ内に留まります。(おそらくuv_stop、ループがブロック モードに移行して新しいイベントを待機する前に呼び出されたかどうかを確認します)。

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

sockets - libevent bufferevents を使用してソケットにデータが読み込まれるまでアプリケーション プロセスを待機させるにはどうすればよいですか?

初めて libevent を使用していますが、読み取りコールバックが呼び出されるまでアプリケーションを実行しないようにしようとして問題が発生しています。私もバッファイベントを使用しています。基本的に私がやっているのは、メインアプリケーションループでスリープを回避し、代わりに、ソケットから読み取るデータがある場合に OS にプロセスを (libevent を介して) ウェイクアップさせることです。誰でもこれを行う方法を知っていますか? libevent のアルファ ビルドで、ベース イベント ループを EVLOOP_NO_EXIT_ON_EMPTY に設定できることがわかりましたが、libevent コードを見ると、proc 全体を使い果たしてしまうと思います。私もこれについて読んだWindowsでソケットをブロッキングに設定するのは悪い考えだという質問があるため、解決策としてそれを行っていません。libuv と libev も同様であり、私のソリューションに貢献する可能性があるため、これをマークします。

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

c++ - libuv - プログラム内の少なくとも 1 つのスレッドが有効になるまでデフォルトのループを実行し続ける方法は?

serverが呼び出された後、新しいスレッドで開始されstartます (サーバーには独自のループがあります)。問題は、デフォルトループにイベントが登録されていないため、プログラムがすぐに終了することです。私が欲しいのは、をpthread_join介してシミュレートすることuv_default_loopです。joinメインスレッドを維持するために、個別のスレッドで実行する必要があるすべてのオブジェクトでカスタムメソッドを呼び出さないようにしたい。

main 関数の重要な部分:

主な機能:

解決済み:私はこのトピックを見つけました。これは本当に 良いです
https://groups.google.com/forum/#!topic/nodejs/Sob97-QbtlA少なくとも 1 つのアクティブなスレッドがあります。スレッドが終了する必要がある場合は、おそらくそれだけで、メイン ループに登録されます。uv_async_tuv_default_loop()uv_closeuv_async_t

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

c - C 最適化: キャッシュ ラインのダーティ化を回避するための条件付きストア

libuv sourceで、次のコードを見つけました。

誰かがこれを少し説明できますか?

キャッシュラインとは正確には何ですか?

また、条件付きストアは、何かをチェックし、成功した場合は何らかの値を書き込むアセンブラー命令であると思います。右?

そのような構造が意味を持つのはいつですか?そうしないと、コンパイラは常に条件付きストアを使用するだけなので、常にではないと思いますよね?

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

c++ - Node JS ネイティブ モジュール: 別の Libuv/NodeJS スタイル プロセスで C/C++ メソッドを実行できますか?

ちょっと変わったこれ…

ほとんどの場合うまく機能する NodeJS ネイティブ モジュールを作成しましたが、クラスには、メモリを共有するコンテキストで実行されるとモジュールを壊すメソッドが含まれています。

大まかに言えば、モジュールは IO サーバーを開きますが、特定の値を取得するために IO サーバーを開いたり閉じたりする必要があるというバグがあります... このアクションを実行すると、古い IO サーバー オブジェクトを参照することが判明したポインターは明らかに破損します。 segfault (「落書きスペース」エラーですよね?)。

この問題を回避するために、私は現在、NodeJS の child_process.fork() を使用して、分離されたコンテキストで誤ったメソッドを実行し、メイン プロセスとフォークされたプロセスの間でメッセージを渡し、必要に応じてプログラムを実行します (つまり、内部でメソッドを呼び出します)。 fork されたプロセスで、'process.on("message", ...)' を使用して結果を取得します)。これはうまく機能しますが、非常に高価なハックのように感じます...

記録のために、Libuv スレッドを使用してメソッドを実行しようとしましたが、同じ問題が発生します。これは、関数呼び出しがまだ共有メモリで行われているためだと思います。

C++を使用して「NodeJSスタイル」プロセスでC/C++コードのごく一部(またはそれ以上...)を実行する方法はありますか?

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

libuv - libuv をビルドできません

Debian マシンで libuv 0.11.24 をビルドしようとしています。私は試した:

次のエラーが表示されます。