5

是否有任何同步原语,如BarriersSemaphorsLocksMonitors ......在 JavaScript / Web Workers 中可用,或者是否有一些可用的库使我能够使用这些东西(我正在考虑类似 java.util.concurrent在Java中)?

Worker 是否具有将它们与线程区分开来的模糊属性(例如,它们可以与主线程共享内存)?是否有某种限制可以产生多少工人(例如,出于安全原因或其他原因......)?我需要特别注意什么吗?

4

3 回答 3

3

Web Worker 没有共享内存的概念;复制线程之间传递的所有消息。话虽如此,您没有障碍、信号量、锁和监视器,因为您在 web worker 模型中不需要它们。

共享内存的概念早在 2011 年 2 月就提出了,但由于开发人员的复杂性,现在状态不会修复 => https://lists.webkit.org/pipermail/webkit-unassigned/2011-February/287595.html

这里还有一个关于网络工作者的很好的宣传。 http://blogs.msdn.com/b/ie/archive/2011/07/01/web-workers-in-ie10-background-javascript-makes-web-apps-faster.aspx

希望这可以帮助

于 2011-11-30T22:31:10.017 回答
2

简而言之:不,javascript 中没有任何同步原语,但也不需要它们,因为 JavaScript 本质上是单线程的 :)。工作人员只能访问自己的范围(没有 dom 操作只是计算)并将消息发送到普通js 所在的主 ui 线程。我不确定工人的最大数量,但肯定是有限制的,你可以在浏览器中试一试:)

希望这可以帮助!

于 2011-11-30T22:30:25.020 回答
2

在这里,您有一个为此目的而制作的基于 jQuery 的库:http ://www.megiddo.ch/jcon-q-rency 。

当然,模型与 java.util.concurrent 并不完全相同,因为我们没有处理相同的环境,正如其他答案中所解释的......

于 2012-08-28T09:18:41.773 回答