javascript - 多线程的 node.js 版本?

标签 javascript multithreading node.js

<分区>

node.js 是单线程的并且遵循事件模型这很棒,但除此之外它对我帮助不大。我有很多 cpu 绑定(bind)任务,我希望每个服务器请求都在一个单独的线程中处理。是否有人创建了多线程的 node.js 分支?

我不是指像 webworker-threads 这样的模块我需要包装我的每一个功能(这对于大型项目来说很麻烦)。我的意思是,每个请求都像大多数其他 Web 服务器一样作为单独的线程进入?

最佳答案

常见的解决方案是使用 build-in cluster module 生成多个 node.js 线程(最多 CPU 核心数)或一些第三方库。

在单独的线程中处理每个请求违背了 node.js 的理念,并抵消了 node.js 的所有优势。将 node.js 用于此类任务毫无意义,因为有许多其他 Web 服务器可以做得更好。

另一方面,node.js 为您提供了一种更有效的处理网络请求的方式。因此,node.js 不是为每个请求生成一个新线程,而是使用 100% 的单个 CPU 核心在单个线程(或小型线程池)中处理所有请求。

您还应该记住,node.js 是为处理 I/O 绑定(bind)任务而设计的,并且可以击败其中的任何其他 Web 服务器。但是 node.js 不太擅长处理 CPU 密集型任务(例如计算)。因此,如果处理每个请求都需要大量计算,那么您就选错了工具。

关于javascript - 多线程的 node.js 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613357/

相关文章:

javascript - 遍历我的主目录时出现 EPERM 错误的原因是什么?

java - 如何实现独写,非独读?

multithreading - F# 异步任务取消,无需 token

node.js - 错误!在树莓派 3 型号 b 上安装 Node 串行端口

node.js - 如何将元数据添加到nodejs grpc调用

javascript - Youtube IFrame API 中的 "This video is unavailable."- 为什么以及如何修复?

javascript - 下载表格到 Excel 并使用 ng-repeat 隐藏行

javascript - 检查日期选择器 html 元素中的值是否为空并执行 jquery 函数

java - 如何确保使用 Hibernate 更新的值在我阅读后没有被更改?

javascript - 为什么 Node REPL 根据是否分配给变量对表达式进行不同的计算?