Answers:
多线程不会在EcmaScript中完成,但可以在主机环境中公开。
经典示例是WebWorkers,它允许您派遣后台工作人员进行工作并滥用,<iframe>
以产生新流程。
应当指出,不需要JavaScript中的多线程(有例外,主要是图形相关的程序)。您不需要多个线程,GUI中已经有了一个事件循环,并且图形渲染(画布)是硬件加速的(这意味着GPU会为您并行并行渲染图形)。
尽管像webcl这样的项目非常令人兴奋。
没有
多线程是软件中最难解决的问题之一。当您的代码不确定时,有太多很难解决的极端情况。(我说的是带锁的多线程等)。另外,所有各种JavaScript库都是基于非多线程的假设构建的。
话虽这么说,但有些Web工作人员确实为您提供了一个基于actor的框架,用于进行多种处理类型的操作。您可以创建工作程序并通过事件来回传递数据。
编辑: 另一个原因是,当创建JavaScript时,它是假设它可以用于小任务,因此没有并发内置。要进行改进,现在将破坏很多代码。通过添加Web Worker,可以有一个没有任何共享内存的并发系统,但是通过使用actor,并发模型在许多其他语言(如Erlang,Scala,Clojure)中表现出了非常强大的性能。等等
(如果您不能告诉我我真的不喜欢基于锁的并发)
Multi threading is one of the hardest things in software to get right.
-我对此感到惊讶!您使用的浏览器,台式机的操作系统,服务于此页面的Web服务器-实际上,您每天使用的每个应用程序都是多线程的。您确定要这么做吗?尚未打动您,但我会告诉您multithreading is not done because it is hard
英特尔不久前发布了River Trail,它支持Java并行编程。但是,这是一个仅Firefox的插件,我还没有听说过将这项技术引入W3C的路线图,更不用说ECMA了。