Node.js使用线程池对系统调用进行排队是否会影响其总体目的?我的理解是Node.js通过事件循环提供纯粹的基于事件的代码,但是,如果每个事件旋转都在幕后生成一个线程,那么它与apache有什么不同呢,也就是生成用于阻止呼叫的线程?我的意思是,如果像apache这样的东西没有使用线程池,那可能会更有效率,但除此之外似乎相同?可能还存在一些速度差异,因为JS的执行速度比说php快......
答案 0 :(得分:1)
主要有两个原因,您可能需要node
:
AFAIK,node
尽可能利用低级非阻止API;我认为线程池是一种使用的后备,当没有阻塞原语根本就不存在时。
有关详细信息,请参阅:
Confusion about node.js internal asynchronous I/O mechanism
不只是关于速度。事件循环驱动的异步回调/ Promises / CSP是一种方法,如何编写代码,“并行运行任务”,但没有显式锁(并没有明显的死锁和竞争条件)。许多尝试过多线程编程的人倾向于欣赏这些半新的范例。