gpt4 book ai didi

node.js - Node.JS 如何在不阻塞的情况下处理多个请求?

转载 作者:行者123 更新时间:2023-12-02 01:50:11 24 4
gpt4 key购买 nike

我已经使用 Node.JS 一段时间了,只是想知道当多个客户端导致一些阻塞/耗时的工作响应时它如何处理?

考虑以下情况1- 有很多端点,其中一个端点很耗时并且在几秒钟内响应。2- 假设有 100 个客户端同时向我的端点发出请求,其中一个客户端需要相当长的时间。

该端点是否会阻止所有事件循环并使其他请求等待?

或者,一般来说,Node.JS 中的请求会互相阻塞吗?

如果不是,为什么?既然是单线程,为什么不互相阻塞呢?

最佳答案

Node.Js 确实在幕后使用线程来执行 I/O 操作。更具体地说,客户端必须等待空闲线程才能执行新的 I/O 任务,这是有限制的。

您可以制作一个简单的玩具示例 - 同时运行多个 I/O 任务(例如使用 Promise.all)并测量每个任务完成所需的时间。然后添加新任务并重复。在某些时候,您会注意到两组。例如,4 个请求花费了 250 毫秒,另外 2 个请求花费了 350 毫秒(此时您会得到“请求相互阻塞”)。

Node.Js 通常被称为单线程,因为它的默认 CPU 操作执行(与其非阻塞 I/O 架构相反)。因此,将其用于密集型 CPU 操作并不是很明智,但在 I/O 操作方面却非常高效。

关于node.js - Node.JS 如何在不阻塞的情况下处理多个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70407276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com