Node JS Express线程说明
我对节点j是比较新的,并且已经阅读了它的一些架构文本。
我了解有关事件循环,主线程(V8引擎线程)和其余作为libuv
线程。 只要主线程需要做asynchronous处理,它就把它交给libuv
线程,并且作为回报,他们将结果添加到事件循环中。
我的担心是express
。 那么谁将HTTP请求插入到事件循环中。 有没有一个单独的专用线程或它是libuv
线程之一?
实际上, express
只是使用nodejs的http API。 无论是expression式还是hapi
或其他nodejs的框架,他们只是使用nodejs的http / https API作为基础。 而事件循环的概念并不来自nodejs,它来源于javascript,js使用它来处理asynchronous函数,nodej也是如此。然后,对于http请求,与其他asynchronous函数相同,V8将请求委托给nodejs相关模块,然后委托给操作系统,当接收到响应或端口接收到一个http请求,并由此给V8线程时,V8将callback推入队列,等待在sysn线程之后调用。