0

node.js 是为每个客户端创建一个 node.js 实例,还是只有一个 node.js 服务器实例用于各种客户端,并且仅为每个客户端的路径创建唯一实例?

4

1 回答 1

2

Nodejs 不会为每个客户端创建新的服务器实例,其他选项也不会。

您可能将多线程视为传统的多线程 Web 服务器为每个客户端请求创建一个新线程,但是由于 node.js 运行的是单线程 JavaScript,因此答案是否定的 - 每个客户端请求都由同一个单线程处理。

这就是为什么 Node.js 和 JavaScript 经常与阻塞一词相关联,指的是如果您编写的代码需要很长时间才能完成,它将阻止所有其他用户获得服务。但是,您不必担心执行 I/O 时的阻塞,因为 Node.js (JavaScript) 是异步的——这意味着客户端请求在执行 I/O 操作(例如网络请求或磁盘读取)时不会相互阻塞。

要阅读有关 Node.js 单线程的更多信息,请参阅此 S/O 答案:为什么 Node.js 是单线程的?

于 2017-12-17T15:36:18.790 回答