Nodejs回调机制 - 哪个线程处理回调?

时间:2013-08-06 13:00:49

标签: node.js asynchronous callback scalability single-threaded

我是nodeJS的新手,并且想知道Node的单实例模型。 在一个简单的nodeJs应用程序中,当使用回调异步处理某些阻塞操作时,运行nodeJs的主线程是否也处理回调? 如果请求是从数据库中获取一些数据,并且有100个并发用户,并且每个db操作需要几秒钟,当最终触发回调时(对于每个连接),主线程是否接受这些请求用于执行回调?如果是这样,nodeJs如何扩展以及它如何快速响应?。

1 个答案:

答案 0 :(得分:9)

nodejs的每个实例都在一个线程中运行。期。当您对网络请求进行异步调用时,它不会等待它,而不是在您的代码或其他任何地方。它有一个贯穿的事件循环。当响应准备就绪时,它会调用您的回调。

这可能是非常高效的,因为它不需要很多线程和所有内存开销,但这意味着你需要注意不要做同步阻塞。

http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/对事件循环有一个相当不错的解释,Ryan Dahl jsconf的原始http://www.youtube.com/watch?v=ztspvPYybIY演示值得关注。有没有见过工程师获得技术演示的起立鼓掌?