Web Workers / javascript - 如何同步一系列指令?

时间:2014-04-05 19:45:36

标签: synchronization web-worker

我正在编写一个计算字处理器布局的工作线程。如果工作人员目前正在运行,那么再次重新计算的请求需要排队等候(比这更复杂,有时会立即重新开始,但这种简单的方法适用于这个问题)。

所以重新计算的代码是:

if (isRunning) {
  restart = true;
  return;
}

recalculate();

方法代码是:

recalculate() {
  isRunning = true;
  // perform the recalculation
  isRunning = false;
}

上面的问题是,如果" if"在调用第一组代码中,然后recalculate()方法完成并将isRunning设置为false,然后第一组代码用return返回完成运行?

或者,如果所有这些代码都在Web worker中,那么使用第一组代码调用该方法会暂停重新计算方法,直到第一组代码完成并返回?如果是这样,那么方法之间会自动同步吗?

谢谢 - 戴夫

1 个答案:

答案 0 :(得分:0)

我已经编写了一堆测试代码,看起来像web worker运行如下 - 当你调用一个方法时,这是唯一一个运行直到它返回的东西。您可以进行其他调用并将它们排队,但在第一个方法完成之前它们不会运行。

好消息不是担心竞争条件,同步等等。坏消息是没有办法与网络工作者的方法交谈。