节点JS Express线程澄清

时间:2017-09-29 06:10:34

标签: javascript node.js express

我对节点js相对较新,并阅读了其架构的一些文本。

我了解事件循环,主线程(V8引擎线程)和其余的libuv线程。一旦主线程需要进行异步处理,它就会将其交给libuv个线程,作为回报,它们会在事件循环中添加结果。

我关注的是express。那么谁将http请求插入到事件循环中。是否有单独的专用线程,或者它是libuv线程之一?

1 个答案:

答案 0 :(得分:4)

实际上,express只是使用nodejs的http API。无论是express还是hapi还是其他一些nodejs的框架,他们只需使用nodejs的http / https api作为基础。并且事件循环的概念不是来自nodejs,它来自javascript,js使用它来处理异步函数,nodejs也是如此。然后对于http请求,它与其他异步函数相同,V8委托对nodejs的相关模块的请求又被委托给操作系统,当接收到响应或者在端口上接收到http请求并由此接收到V8线程时,V8将回调推入队列并等待在sysn线程之后调用。