Nodejs的回调机制

时间:2012-11-01 01:43:39

标签: web-services apache node.js

据说Nodejs只使用一个进程来处理请求,然后那些使用I / O的函数将异步执行,这将提高Web服务器的效率。但是,那些处理I / O的过程不计算在内?与传统的Web服务器(如Apache)相比,它使用多线程处理一个线程中每个请求的请求,是否降低了成本(请求+ I / O)?

1 个答案:

答案 0 :(得分:0)

是的,node.js只需要一个线程(这比需要一个进程更具限制性,具体取决于操作系统)。是的,这确实会影响您的编程要求:

- 您的程序绝不能阻止!

你可以参考很多资源,关于为什么node.js如此之快,例如:

http://www.manning.com/cantelon/NjsiA_meap_ch01.pdf

http://nodejs.org/about/

node.js节省了上下文切换所带来的线程惩罚,这是其他服务器所需要的(参见Slebetman)。我们在2004年用C ++构建了自己的这样的服务器,因为高性能要求,当你的服务器必须打开和关闭大量连接时,这种方法确实节省了大量的资源。

我认为你在问题中缺少的是node.js将需要很长时间的操作移交给操作系统,并且回答了问题。 O / S是完全多进程的。因此node.js只需要一个线程来控制它,但I / O由O / S进程控制。

然而,

node.js可以产生额外的进程,您可以在其中运行并行程序。