1

ちょっと変わったこれ…

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

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

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

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

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

4

1 に答える 1