正如我目前所理解的: Javascript是单线程的。如果您推迟了某个过程的执行,您只需将它(队列)安排在下次线程空闲时运行。但是Async.js定义了两个方法:Async::parallel & Async::parallelLimit,我引用如下:
并行运行一个函数数组,而不等待上一个函数完成。如果任何函数将错误传递给其回调..。
与并行任务一样,只并行执行任务,在任何时候执行的任务最多都是“限制”任务。
就我对英语的理解而言,当你说:“并行做任务”意味着同时做--同时做。
Async.js如何在单个线程中并行执行任务?我是不是漏掉了什么。
发布于 2013-09-26 09:53:24
Async.js如何在单个线程中并行执行任务?我是不是漏掉了什么。
parallel同时运行它的所有任务。因此,如果您的任务包含I/O调用(例如查询DB),它们将显示为并行处理。
这是如何在一个线程中启用的?!这就是我无法理解的。
Node.js是非阻塞的.因此,它不是并行地处理所有任务,而是从一个任务切换到另一个任务。因此,当第一个任务使I/O调用处于空闲状态时,Node.js只需切换到处理另一个任务。
I/O任务将其大部分处理时间用于等待I/O调用的结果。在像Java这样的阻塞语言中,这样一个任务在等待结果时阻塞它的线程。但是Node.js利用它来处理另一个任务,而不是等待。
这意味着,如果每个任务的内部处理都是异步的,那么线程将被授予该任务的每个位,而不管它们中是否有人已经完成,还是直到所有任务都完成了它们的位呢?
是的,就像你说的那样。Node.js开始处理第一个任务,直到暂停执行I/O调用为止。这时,Node.js离开它,将它的主线程分配给另一个任务。因此,您可以说,线程依次授予每个活动任务。
发布于 2015-08-10 18:21:33
Async.Parallel在这里有很好的文档:https://github.com/caolan/async#parallel
Async.Parallel是关于并行启动I/O任务,而不是并行执行代码。如果您的任务不使用任何计时器或执行任何I/O,它们实际上将被串联执行。每个任务的任何同步设置部分都将一个接一个地发生。JavaScript仍然是单线程的.
发布于 2013-09-26 09:49:35
函数不是同时执行的,但是当第一个函数传递给异步任务(例如setTimeout、network、.)时,即使第一个函数没有调用提供的回调,第二个函数也会启动。
至于并行任务的数量:这取决于您选择什么。
https://stackoverflow.com/questions/19023977
复制相似问题