NodeJS:asynchronous模块的并行性
我正在按照asynchronous模块的每个方法( https://github.com/caolan/async#each )。 它说该方法并行迭代数组。 “ 平行 ”是混淆了我的词。 AFAIK,现在JavaScript可以并行执行代码,因为它有一个单线程模型。
每种方法中显示的示例都着重于IOscheme。 我正在使用“每个”方法只是添加数组的数字。 如果存在并行性,我可以用我的例子来certificate吗?
谢谢阅读。
asynchronous文档中的“并行”并不是指在并发性方面的“并行”(如同时运行多个进程或线程),而是在每一步独立于其他步骤的“并行”相反的操作将是eachSeries
,每个步骤只有在前一个完成后才运行)。
并行版本只有在这些步骤执行某种types的I / O(由于Node的asynchronous特性)可以并行运行时才有意义:如果一个步骤需要等待I / O,其他步骤可以继续发送/接收数据。
如果这些步骤主要是cpu绑定的(也就是执行大量的计算),那么它不会为您提供更好的性能,因为像您说的那样,Node会在单个线程中运行解释器,而不是async
更改。
就像robertklep说的那样,它更多的是并行而不是并行。 通过并行执行计算大量代码,您不会获得更多的性能收益。 当您必须执行并行I / O(例如,与数组的所有项目的外部Web服务进行通信)时,此function非常有用。
- NodeJs:使用请求url的asynchronous – Post方法发送响应之前执行的所有url
- 使用Node.js,Async和Formidable进行error handling
- asynchronousnode.js数据stream混淆
- Map-Reduce in Node
- Node + Sequelize:如何在添加之前检查项目是否存在? (asynchronous混淆)
- 嵌套节点async.eachSeries
- 在Node.js中使用MongoDB进行扩展,我应该什么时候一次查询所有的ID,并行查询每个ID?
- node.js嵌套async.eachSeries
- Nodejs / Async:如何在代码片段中提到的async.map的iteratee函数中如何工作?