问题不成立。 Node.js 的特性就是 单线程 异步 I/O,没有所谓的 多线程。 如果利用 pm2 之类的 cluster 集群模式,是 多进程 而非 多线程。 如果你知道的恰好多一些,知道有 threads_a_gogo 这个模块,那么它本质上是利用了 Linux 的系统调用 fork 来实现的,实质上还是 多进程(而且这个库作者都不推荐在生产环境中使用)。 感谢评论区 @阿蛇 的补充。 一时没想到还有 Workers 这种东西,浏览器倒是早就支持了,不过 Node 刚刚才在 v13 中把这个特性标记成 stable,目前是没见过哪个框架或是生产项目用这个特性的。 不过 Workers 的底层原理和其他语言中的多线程还是有不小区别的,而且也只适用于 CPU 密集型,对于 I/O 密集型反而会降低性能。(话说回来了,后端都用 Node 了,还能有啥是 CPU 密集的了?)
问题不成立。
Node.js 的特性就是
单线程
异步 I/O,没有所谓的多线程
。如果利用 pm2 之类的 cluster 集群模式,是
多进程
而非多线程
。如果你知道的恰好多一些,知道有
threads_a_gogo
这个模块,那么它本质上是利用了 Linux 的系统调用fork
来实现的,实质上还是多进程
(而且这个库作者都不推荐在生产环境中使用)。感谢评论区 @阿蛇 的补充。
一时没想到还有 Workers 这种东西,浏览器倒是早就支持了,不过 Node 刚刚才在 v13 中把这个特性标记成 stable,目前是没见过哪个框架或是生产项目用这个特性的。
不过 Workers 的底层原理和其他语言中的多线程还是有不小区别的,而且也只适用于 CPU 密集型,对于 I/O 密集型反而会降低性能。(话说回来了,后端都用 Node 了,还能有啥是 CPU 密集的了?)