首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS -是全局线程池还是每个进程?

NodeJS -是全局线程池还是每个进程?
EN

Stack Overflow用户
提问于 2017-02-02 23:48:39
回答 1查看 413关注 0票数 3

假设我有一台机器运行5个不同的nodejs进程。每个节点进程是否都有自己的libuv线程池,还是它们都共享一个全局线程池?

我很困惑,因为我认为libuv线程池是每个进程,但是在libuv文档(http://docs.libuv.org/en/latest/threadpool.html)中它说:

线程池是全局的,并且在所有事件循环中共享。

我不确定我是否真的理解“所有事件循环”是什么意思。

回到我的例子。如果我有5个nodejs进程,并且假设libuv的默认线程池大小为4,那么我是否使用:

( a) 9个线程:5个nodejs事件循环+4个用于全局线程池的libuv线程

( b) 25个线程:5个nodejs事件循环+ (5 * 4) libuv线程,用于5个不同的线程池,每个线程具有4个线程。

( c)上述任何一项都没有?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-03 00:25:20

当文档中说“所有事件循环”时,它指的是同一个过程中的所有libuv事件循环。所指的“全局”部分在单个进程的范围内。

libuv无法与任意子进程协调,以确保在使用libuv的所有进程中仅在系统范围内使用这么多线程。这可能需要配置文件或其他东西,而libuv并没有利用这些文件。

因此,如果您有5个节点进程,那么假设每个进程都使用默认的libuv线程池大小,那么总共将有20个libuv线程(5个进程*每个线程)。现在请记住,每个进程将有超过4个线程,但并不是所有这些线程都是libuv线程。例如,您有用于执行javascript的主线程,但也有一些V8用于优化代码、垃圾收集等各种任务的线程。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42014448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档