我正在编写一个计算字处理器布局的工作线程。如果工作人员目前正在运行,那么再次重新计算的请求需要排队等候(比这更复杂,有时会立即重新开始,但这种简单的方法适用于这个问题)。
所以重新计算的代码是:
if (isRunning) {
restart = true;
return;
}
recalculate();
方法代码是:
recalculate() {
isRunning = true;
// perform the recalculation
isRunning = false;
}
上面的问题是,如果" if"在调用第一组代码中,然后recalculate()方法完成并将isRunning设置为false,然后第一组代码用return返回完成运行?
或者,如果所有这些代码都在Web worker中,那么使用第一组代码调用该方法会暂停重新计算方法,直到第一组代码完成并返回?如果是这样,那么方法之间会自动同步吗?
谢谢 - 戴夫
答案 0 :(得分:0)
我已经编写了一堆测试代码,看起来像web worker运行如下 - 当你调用一个方法时,这是唯一一个运行直到它返回的东西。您可以进行其他调用并将它们排队,但在第一个方法完成之前它们不会运行。
好消息不是担心竞争条件,同步等等。坏消息是没有办法与网络工作者的方法交谈。