gpt4 book ai didi

javascript - NodeJS 中的 worker 是什么

转载 作者:行者123 更新时间:2023-11-28 18:09:36 25 4
gpt4 key购买 nike

我主要使用其他编程语言进行编程,但我一直在用户 NodeJS 中制作 Web 应用程序,并且遇到了一些我不太了解的事情。

我提到了https://nodejs.org/api/cluster.html#cluster_how_it_works

我发现这很好地解释了 NodeJS 如何处理大量请求,尽管 Node 只是单线程的。然而,令我困惑的是,当它说一个端口在“许多工作人员”之间共享时。

现在,如果 Node 不是多线程的,那么这些工作线程到底是什么。例如,在 java 中,您可以使用 Completable Futures 拥有多线程应用程序。这些导致不同的线程承担责任。

但是 Node 中的 worker 如果不是线程的话又是什么?

最佳答案

Node 可以在单个线程中轻松处理 10,000 个并发连接(详细信息请参阅 this answer)。对于某些阻塞的事情,它使用线程池,但这对您来说是透明的。您的 JavaScript 在每个进程中都使用单线程事件循环。

请记住,以速度着称的 Web 服务器 nginx 也是单线程的。 Redis,一个以速度着称的数据库,也是单线程的。多线程适用于 CPU 密集型任务(当每个 CPU 使用一个线程时),但对于通常使用 Node 执行的 I/O 密集型任务,单线程事件循环效果更好。

现在,回答您的问题 - 在您链接到的网站正在讨论的集群上下文中,工作线程是一个进程。这些进程中的每一个仍然有一个单线程事件循环,但可以有许多进程同时执行。

有关更多详细信息,请参阅这些答案:

关于javascript - NodeJS 中的 worker 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41899718/

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