使用JavaScript Web Workers进行并行编程/同步
Parallel programming / Synchronization using JavaScript Web Workers
是否存在像屏障、信号量、锁、监视器等同步原语?在JavaScript/Web Workers中可用,或者是否有一些库可用,使我能够使用这些东西(我正在考虑Java中的Java .util.concurrent)?
worker是否有一些模糊的属性来区分它们与线程(例如,它们可以与主线程共享内存吗)?是否有某种限制可以产生多少工人(比如,出于安全原因或其他原因……)?我需要特别注意什么吗?
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
希望能有所帮助
简而言之:javascript中没有任何同步原语,但也不需要它们,因为javascript本质上是单线程的:)。worker只能访问自己的作用域(没有dom操作,只是计算),并向normal js所在的主ui线程发送消息。我不确定工人的最大计数,但肯定有一个限制,你可以在浏览器中尝试:)
希望这对你有帮助!
这里有一个基于jQuery的库:http://www.megiddo.ch/jcon-q-rency.
当然,该模型与java.util.concurrent并不完全相同,因为我们处理的不是相同的环境,正如其他答案所解释的那样…
- jquery动画可以通过编程链接吗
- 一点javascript元编程&可链接的设置器
- Javascript/jQuery中的并行Ajax调用
- 异步并行错误
- 节点协同与生成器和Promise并行流量控制
- 如何使用JS/nightwatchjs并行运行多个测试
- 如何正确编程jQuery动画与平滑(导航栏)
- Mongodb数千个并行运行的查询
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 以编程方式选择文本Mobile Safari
- 我们可以使用任意的编程语言来动态化HTML页面吗
- 我如何编程许多不同的条件和操作
- Web编程,简单但适用于机器人项目
- Thunderbird,如何以编程方式选择第一个选项卡
- 以编程方式获取无线接入点列表
- 起始节点.js用于并行的线程池
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 通过javascript以编程方式将文件插入HTML输入
- 使用JavaScript Web Workers进行并行编程/同步
- NodeJs 异步编程 - 协调并行调用