Synchronization Web Workers/javascript-如何同步指令序列?

Synchronization Web Workers/javascript-如何同步指令序列?,synchronization,web-worker,Synchronization,Web Worker,我正在编写一个计算文字处理器布局的工作线程。如果worker当前正在运行,则需要排队等待重新计算的请求(有时会比重新启动更复杂,但这种简单的方法适用于此问题) 因此,重新计算的代码是: if (isRunning) { restart = true; return; } recalculate(); 方法代码为: recalculate() { isRunning = true; // perform the recalculation isRunning = false

我正在编写一个计算文字处理器布局的工作线程。如果worker当前正在运行,则需要排队等待重新计算的请求(有时会比重新启动更复杂,但这种简单的方法适用于此问题)

因此,重新计算的代码是:

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

recalculate();
方法代码为:

recalculate() {
  isRunning = true;
  // perform the recalculation
  isRunning = false;
}
上面的问题是,如果在调用了第一组代码中的“if”之后,Recomulate()方法完成并将isRunning设置为false,那么第一组代码将以返回的方式完成其运行,该怎么办

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


谢谢-dave

我已经编写了一系列测试代码,看起来web workers的运行方式如下-当您调用一个方法时,只有这样才能运行,直到它返回为止。您可以进行其他调用,这些调用将排队,但在第一个方法完成之前,它们不会运行

好消息是没有关于竞争条件、同步等的担忧。坏消息是没有办法与正在处理的web worker中的方法对话