【发布时间】:2015-12-03 11:29:40
【问题描述】:
在对 Node.js 和 libuv 进行一些研究时,我使用 UV_THREADPOOL_SIZE=1 启动了一个简单的节点服务器,并查看了 pstree 以了解它真正使用了多少线程。
对于 Node.js 0.10 pstree -p | grep node 产生
node(5157)-+-{node}(5158)
`-{node}(5162)
为了让事情更复杂一点,我也尝试了 0.12 和 iojs 3.3。每个版本的线程数都不同。
线程总数与线程池大小
0.10:UV_THREADPOOL_SIZE + 1
0.12:UV_THREADPOOL_SIZE + 2
3.3:UV_THREADPOOL_SIZE + 4
我还尝试为线程池大小设置更高的数字,以确保我不低于某个最小值。
我的问题是:
- 在主进程 (5157) 上执行什么,在下面的线程上执行什么?
- 我们可以假设 (5158) 是 libuv 的线程 ID,并且 (5162) 是单个“工作”线程吗?
- 在 0.12 和 iojs 3.3 中会发生什么?为什么多出 4 个线程?
【问题讨论】: