1

我需要在我的应用程序中实现像 Web Workers 这样的多线程,我们计划在其中使用 Spidermonkey 来执行 javascript。我想要这样的 API:

function BackgroundWorker() {
    // do something
}

someglobalobject.spawnWorker(BackgroundWorker);

其中 someglobalobject.spawnWorker 是一个 C 绑定,它产生线程(如果 worker 被延迟,则不会产生),创建新的 JSContext,将函数BackgroundWorker传输到该上下文并执行它。我们计划通过与worker之间的消息传递来实现资源共享(worker可以注册一些事件挂钩或通过C绑定调用接收消息),也可能通过C绑定到某种共享内存(可能是STM)。充其量我们想为 JS 实现某种 Erlang 风格的演员。所以我有几个问题:

  1. 有没有一些例子可以实现这个东西(但不像 Web Workers 那样复杂)?
  2. JSContext 的足迹是什么?可能会创建很多,还是会导致一些性能瓶颈?
  3. 是否有能力在从该 JavaScript 调用的某个 C 绑定中暂停 JavaScript 执行?
4

0 回答 0