繁体   English   中英

Node.js中的单线程如何真正工作?

[英]How does the single thread in Node.js really work?

我目前正在详细研究Node.js在幕后的工作方式。 我有一个关于它的单线程体系结构和事件循环的问题。 我已经熟悉了其中的大部分内容,但是有一件事让我感到困惑。 一位在线讲师说,如果在“顶层”代码中,可以调用一个繁重的同步函数。 我知道它在事件循环甚至开始之前就运行了,但是由于它在单线程上,它是否还阻止其他用户?

在服务器启动过程中通常会运行同步操作,这完全可以。 实际上,如果您不打算在服务器启动中使用同步操作,则启动代码可能要复杂得多。

例如, require()操作是同步和阻塞的。 因此,是的,在代码的服务器启动部分中使用同步代码是完全可以的。

但是,一旦服务器启动,在任何类型的请求处理程序中使用fs.readFileSync()类的同步I / O代码可能会破坏服务器的可伸缩性。

我知道它在事件循环甚至开始之前就运行了,但是由于它在单线程上,它是否还阻止其他用户?

如果同步代码在服务器开始服务请求之前,则没有其他用户要阻止。 它只是使服务器运行的代码的一部分。

如果同步代码是在服务器开始处理请求之后执行的,那么是的,它将阻止其他代码在运行同步代码时被处理,这将是不可取的事情,因为它将大大降低服务器的可伸缩性和响应能力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM