1

アプリ内に Web ワーカーのようなマルチスレッドを実装する必要があり、Spidermonkey を使用して JavaScript を実行する予定です。そのAPIのようなものが欲しい:

function BackgroundWorker() {
    // do something
}

someglobalobject.spawnWorker(BackgroundWorker);

ここで、someglobalobject.spawnWorker は、スレッドを生成し (worker が遅延している場合は生成しない)、新しい JSContext を作成し、関数BackgroundWorkerをそのコンテキストに転送して実行する C バインディングです。ワーカーとの間のメッセージの受け渡し (ワーカーはいくつかのイベント フックを登録したり、C バインド呼び出しによってメッセージを受信したりできます) によってリソース共有を実装することを計画しています。せいぜい、JS 用にある種の Erlang スタイルのアクターを実装したいだけです。それで、私はそれについていくつか質問があります:

  1. これを実装する方法の例はありますか (ただし、Web ワーカーのように複雑ではありません)。
  2. JSContext のフットプリントは何ですか? それらをたくさん作成することは可能ですか、それともパフォーマンスのボトルネックを引き起こす可能性がありますか?
  3. その JavaScript から呼び出された C バインディング内で JavaScript の実行を一時停止する機能はありますか?
4

0 に答える 0