Async.js如何在一个线程中并行执行任务?我错过了什么吗?
parallel同时运行所有任务。因此,如果您的任务包含I / O调用(例如查询数据库),则它们看起来就像是并行处理的一样。
如何在单个线程中启用它?那是我无法理解的。
Node.js是非阻塞的。因此,它不是并行处理所有任务,而是从一个任务切换到另一个任务。因此,当第一个任务使I /
O调用使其自身处于空闲状态时,Node.js只需切换到处理另一个任务即可。
I / O任务花费了大部分处理时间来等待I /
O调用的结果。在阻塞Java之类的语言中,此类任务在等待结果时会阻塞其线程。但是Node.js可以利用时间来处理其他任务,而不必等待。
因此,这意味着如果每个任务的内部处理都是异步的,则将线程授予该任务的每个位,而不管它们中的任何一个是否已完成直到所有位都已完成?
是的,几乎就像您说的那样。Node.js开始处理第一个任务,直到它暂停以进行I /
O调用为止。那时,Node.js离开它,并将其主线程分配给另一个任务。因此,您可以说线程被依次授予每个活动任务。



