1
10
网络工作者故意不分享任何东西——一个工作者的所有东西都完全隐藏在其他工作者和浏览器的页面中。如果有任何方法可以在工作人员之间共享非“原子”值,那么这些值的语义几乎不可能用于可预测的结果。现在,一个 能够 在一定程度上,引入锁作为使用这些值的一种方法——获取锁,检查并修改值,然后释放锁——但是锁很难使用,而且由于通常的失败模式是死锁,所以您可以很容易地“构建”浏览器。这对开发人员或用户没有好处( 尤其地 如果您认为Web环境非常适合非程序员的实验,他们甚至从未听说过线程、锁或消息传递),那么另一种选择就是在浏览器中的工作人员或页面之间不共享状态。您可以将消息(可以将其视为“通过线路”序列化)传递给工作者,然后工作者根据序列化信息创建其自己的原始值副本),而无需解决任何这些问题。 实际上,消息传递是支持并行性的正确方法,而不会让并发性问题完全失控。适当地安排消息传递,您应该拥有尽可能多的权力,就好像可以共享状态一样。你真的不想要你认为你想要的替代品。 |
2
5
没有,但是您可以向Web工作者发送消息,这些消息可以是数组、对象、数字、字符串、布尔值和ImageData,也可以是它们的任意组合。网络工作者也可以发回信息。 |
3
3
有两个选项可以在专用员工之间共享数据:
Spawning a Shared Worker in a Dedicated Worker 2.第2条。 Channel Messaging API
|
4
2
我最近读到(但没有用过)。 shared workers .根据 Share the work! Opera comes with SharedWorker support ,仅支持最新的浏览器(Opera 10.6、Chrome 5、Safari 5)。 |
prmph · javascript上抢占式后台工作调度的通用解决方案 6 年前 |
prmph · 当事件挂起时附加新侦听器会发生什么情况? 6 年前 |
mpen · 如何在web worker中获取图像宽度和高度? 7 年前 |
Haych · 从Web应用程序发送地理位置,即使标签不在焦点上? 8 年前 |