最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

JavaScriptNodeJS真正并行吗?

IT培训 admin 7浏览 0评论

JavaScript / NodeJS真正并行吗?

最近在学校,我在平行计算课上学过C ++ / OpenMPI。我真的不喜欢用C ++编程,因为它的级别低,编程更难,更容易出错等。

所以我一直在想,JavaScript / NodeJS(我开始喜欢的东西)实际上是真正的并行吗?或者它只是使用非阻塞操作来模拟并行执行(我认为是这样)?像async这样的库提供了与我在OpenMPI中使用的类似的功能:收集,分散甚至“并行”。但我有一种感觉它只使用非阻塞IO模拟并行性?

也许只有node-webcl真正平行?

更新:似乎可以通过网络工作者(约31分钟):观看

回答如下:

事实上,JavaScript的设计是单线程的。但是你不是第一个想要一些并行性的人,所以有些东西可以真正并行:

  1. WebWorkers - 在线程中运行,这意味着它们创建起来相当便宜。他们限制了数据交换能力。起初,您只能在工作人员之间发送消息,但现在它们要好得多,您甚至可以使用SharedArrayBuffer进行并发内存访问。 NodeJs不支持,仅在浏览器中支持。
  2. WebGL/WebCL - 利用图形子系统进行并行计算。非常快,但对一组有限的问题有效。并非所有任务都可以在类似GPU的子系统上有效计算。它还需要额外的数据转换,以像素格式呈现数据。有不错的浏览器支持WebGL,但正如您已经提到的那样只有NodeJ的实验性实现。
  3. SIMD - 数据的并行性。这是一个很有前途的事情,但它不再是JavaScript的路线图,它将成为WebAssembly标准的一部分。
  4. Cluster - NodeJs并行解决方案。允许运行多个进程(而不是线程),甚至支持SharedArrayBuffer从第9版开始进行通信。

这就是它。还有WebAssembly threads proposal,但是,首先,它是一个提案,其次,WebAssembly不是JavaScript。

通常,JavaScript到目前为止还不是低级并行计算的最佳工具。还有很多其他适合这种情况的工具:Java,C#,Go ......

JavaScript / NodeJS真正并行吗?

最近在学校,我在平行计算课上学过C ++ / OpenMPI。我真的不喜欢用C ++编程,因为它的级别低,编程更难,更容易出错等。

所以我一直在想,JavaScript / NodeJS(我开始喜欢的东西)实际上是真正的并行吗?或者它只是使用非阻塞操作来模拟并行执行(我认为是这样)?像async这样的库提供了与我在OpenMPI中使用的类似的功能:收集,分散甚至“并行”。但我有一种感觉它只使用非阻塞IO模拟并行性?

也许只有node-webcl真正平行?

更新:似乎可以通过网络工作者(约31分钟):观看

回答如下:

事实上,JavaScript的设计是单线程的。但是你不是第一个想要一些并行性的人,所以有些东西可以真正并行:

  1. WebWorkers - 在线程中运行,这意味着它们创建起来相当便宜。他们限制了数据交换能力。起初,您只能在工作人员之间发送消息,但现在它们要好得多,您甚至可以使用SharedArrayBuffer进行并发内存访问。 NodeJs不支持,仅在浏览器中支持。
  2. WebGL/WebCL - 利用图形子系统进行并行计算。非常快,但对一组有限的问题有效。并非所有任务都可以在类似GPU的子系统上有效计算。它还需要额外的数据转换,以像素格式呈现数据。有不错的浏览器支持WebGL,但正如您已经提到的那样只有NodeJ的实验性实现。
  3. SIMD - 数据的并行性。这是一个很有前途的事情,但它不再是JavaScript的路线图,它将成为WebAssembly标准的一部分。
  4. Cluster - NodeJs并行解决方案。允许运行多个进程(而不是线程),甚至支持SharedArrayBuffer从第9版开始进行通信。

这就是它。还有WebAssembly threads proposal,但是,首先,它是一个提案,其次,WebAssembly不是JavaScript。

通常,JavaScript到目前为止还不是低级并行计算的最佳工具。还有很多其他适合这种情况的工具:Java,C#,Go ......

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论