Async.js-并行实际上是并行的吗?

到目前为止,据我了解:Javascript是单线程的。如果您推迟执行某些过程,则只需将其安排(排队)在线程空闲时下次运行。但是Async.js定义了两种方法:Async::parallel

& Async::parallelLimit和,我引用:

  • 并行(任务,[回调])

并行运行一系列功能,而无需等到上一个功能完成。如果任何函数将错误传递给其回调…

  • parallelLimit(任务,限制,[回调])

与并行执行相同,仅并行执行任务,任何时候最多执行“限制”任务。

就我对英语的理解而言,当您说:“并行执行任务”是指同时(同时)执行任务。

Async.js如何在一个线程中并行执行任务?我错过了什么吗?

回答:

Async.js如何在一个线程中并行执行任务?我错过了什么吗?

parallel同时运行所有任务。因此,如果您的任务包含I / O调用(例如查询数据库),则它们看起来就像是并行处理的一样。

如何在单个线程中启用它?那是我无法理解的。

Node.js是非阻塞的。因此,它不是并行处理所有任务,而是从一个任务切换到另一个任务。因此,当第一个任务使I /

O调用使其自身处于空闲状态时,Node.js只需切换到处理另一个任务即可。

I / O任务花费了大部分处理时间来等待I /

O调用的结果。在阻塞Java之类的语言中,此类任务在等待结果时会阻塞其线程。但是Node.js可以利用时间来处理其他任务,而不必等待。

因此,这意味着如果每个任务的内部处理都是异步的,则将线程授予该任务的每个位,而不管它们中的任何一个是否已完成直到所有位都已完成?

是的,几乎就像您说的那样。Node.js开始处理第一个任务,直到它暂停以进行I /

O调用为止。那时,Node.js离开它,并将其主线程分配给另一个任务。因此,您可以说线程被依次授予每个活动任务。

以上是 Async.js-并行实际上是并行的吗? 的全部内容, 来源链接: utcz.com/qa/412851.html

回到顶部