イベントが私の制御下にない他のスレッドによってトリガーされるため、js関数をコールバックすることになっているノードC ++アドオンを作成しています(実際には、私が使用するマネージドdllの.netスレッドです)。JS の世界はシングルスレッドであるため、js 関数の参照を保持したまま、非 js スレッドから呼び出すことはできません。そのスレッドのコールバック関数に渡したいパラメータを作成することさえできません。
uv_queue_work
js スレッドから作業を移動し、終了したら js スレッドからコールバックして、js 関数をコールバックするなど、必要なことを行う場合に使用されているのを見てきました。
後で参照するために、その関数のシグネチャを次に示します。
int uv_queue_work(uv_loop_t* loop, uv_work_t* req, uv_work_cb work_cb,
uv_after_work_cb after_work_cb);
uv_queue_work を呼び出すことは、1 回限りのジョブでは問題ありません。また、 from への呼び出しを連鎖させることで、任意の頻度で私を呼び出すようにすることもできますが、uv_queue_work
他のスレッドと同期しますが、もっと簡単な方法はないのでしょうか。after_work_cb
work_cb
次の機会にメインの js スレッドで実行されるコードを指す fn ポインターを使用して、他のスレッドから直接呼び出すことができる node.js によって提供される fn のように。何か案が?