我对节点js相对较新,并阅读了其架构的一些文本。
我了解事件循环,主线程(V8引擎线程)和其余的libuv
线程。一旦主线程需要进行异步处理,它就会将其交给libuv
个线程,作为回报,它们会在事件循环中添加结果。
我关注的是express
。那么谁将http请求插入到事件循环中。是否有单独的专用线程,或者它是libuv
线程之一?
答案 0 :(得分:4)
实际上,express
只是使用nodejs的http API。无论是express
还是hapi
还是其他一些nodejs的框架,他们只需使用nodejs的http / https api作为基础。并且事件循环的概念不是来自nodejs,它来自javascript,js使用它来处理异步函数,nodejs也是如此。然后对于http请求,它与其他异步函数相同,V8委托对nodejs的相关模块的请求又被委托给操作系统,当接收到响应或者在端口上接收到http请求并由此接收到V8线程时,V8将回调推入队列并等待在sysn线程之后调用。