gpt4 book ai didi

javascript - NodeJS : understanding nonblocking/event queue/single thread

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:00 25 4
gpt4 key购买 nike

我是 Node 新手,并尝试了解 Node 的非阻塞性质。
在下图中,我创建了请求的高级图表。

enter image description here

据我了解,单个用户针对单个应用程序的所有进程都在单个线程上运行。
我想了解的是事件循环的逻辑如何适合该图中。事件循环与指令排队的处理器管道相同吗?
想象一下,我们将一个应用程序页面加载到 RAM 中,该页面创建一个供程序读取的流:

readstream.on('data', function(data) {}); 

创建读取流并等待数据发生的指令:该指令是否“挂起”在处理器的寄存器中(等待 I/O 完成),而在多线程环境中,处理器只是不会从 RAM 中获取新指令,直到上一个 I/O 请求的结果返回到 RAM?
或者我的看法完全/部分错误?

只是一个补充(相关的,也许是愚蠢的)问题:在服务器上的不同线程上运行不同的用户,单线程的好处不是只针对单个用户吗?

我对此类细节不熟悉,所以如果您不完全理解这个问题,请原谅我。但在继续前进之前,理解这一点对我来说似乎至关重要。

最佳答案

事件驱动的非阻塞 I/O 依赖于现代操作系统具有在 O/S 级别执行轮询(不浪费 CPU 周期)的“选择”方法这一事实。 select 方法允许您注册某些 I/O 事件的回调。这往往比支持线程的语言中常用的“每个连接一个线程”模型要高效得多。有关详细信息,请在 Unix/Linux 操作系统上执行“man select”。

关于javascript - NodeJS : understanding nonblocking/event queue/single thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724516/

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