我目前正在与Web Workers合作,并且出于一些测试目的,如果可以在主线程中等待,直到工人完成他们正在做的事情,那将是很好的。所以:
主线程 - >启动工人
主线程 - >等待工人完成
工人 - >做一些工作
工人完成。
主线程 - >做一些事情。
我意识到最正确的方法是在主线程中使用回调,只要工作人员完成就会调用,但是由于实际原因这不起作用。我在Java中创建了类似于CyclicBarrier的东西,但每当我在主线程中调用barrier.enter()时,我当然会得到一个错误。因此,我想知道的是,如果有任何设置或类似的东西,我可以设置暂时允许我阻止主线程。我正在使用Node btw运行我的程序。
这纯粹是出于测试目的,我当然不会在生产环境中使用它!
答案 0 :(得分:0)
如果您坚持不使用活动,那么您就会陷入棘手的境地。如果阻止主线程,则无法处理工作程序完成后发送的事件。工作者和主线之间没有其他沟通渠道。
还是有吗?您可以创建一个HTTP服务器,将所有数据从worker转发到主线程。主线程可以在该服务器上create a synchronous HTTP request。同步AJAX请求会阻塞主线程但不占用CPU。