1

我目前正在与 Web Workers 合作,出于某些测试目的,如果可以在主线程中等待直到工作人员完成他们正在做的事情,那就太好了。所以:

主线程->启动工人

主线程->等待工人完成

工人->做一些工作

工人完成。

主线程-> 做一些事情。

我意识到这样做的最正确方法是在主线程中使用回调,每当工作人员完成时调用该回调,但出于实际原因这将不起作用。我在 Java 中制作了类似于 CyclicBarrier 的东西,但是每当我在主线程中调用 barrier.enter() 时,我当然会得到一个错误。因此,我想知道是否有任何设置或类似的设置可以让我暂时阻止主线程。我正在使用 Node btw 运行我的程序。

这纯粹是为了测试目的,我当然不会在生产环境中使用它!

4

1 回答 1

0

如果你坚持不使用事件,你就会把自己置于一个棘手的境地。如果您阻塞主线程,您将无法处理工作人员发送的事件一旦完成。并且工作线程和主线程之间没有其他通信通道。

或者有吗?您可以创建一个 HTTP 服务器,将所有数据从工作线程中继到主线程。主线程可以在该服务器上创建同步HTTP 请求。同步 AJAX 请求会阻塞主线程,但不会占用 CPU。

于 2016-03-08T23:08:59.447 回答