SO中文参考
首页
(current)
程序语言
c
java
python
c++
go
javascript
swift
c#
操作系统
linux
ubuntu
centos
unix
数据库
oracle
mysql
mongodb
postgresql
框架
node.js
angular
react-native
avalon
django
twisted
hadoop
.net
移动开发
android
ios
搜索
“集群”和“worker_threads”在 Node.js 中如何工作?
问题描述
投票:0
回答:1
我理解正确吗:如果我使用
cluster
包,是否意味着 为每个创建的worker创建一个新的节点实例?
cluster
和
worker_threads
套餐有什么区别?
node.js
v8
node-worker-threads
1个回答
71
投票
实际上,您的不同之处在于
基于进程
与
基于线程
。线程共享内存(例如
SharedArrayBuffer
),而进程则不然。本质上它们绝对是同一件事。
集群
每个CPU上启动一个
进程
,并且可以通过
IPC
进行通信。
每个进程都有自己的内存和自己的 Node (v8) 实例。创建大量它们可能会产生内存问题。
非常适合生成许多共享相同端口 b/c 的 HTTP 服务器,
master
主进程会将请求复用到子进程。
工作线程
一个
过程
总共
创建多个线程,每个线程有一个 Node 实例(一个事件循环,一个 JS 引擎)。除少数线程外,大多数 Node API 均可用于每个线程。所以本质上 Node 正在嵌入自身并创建一个新线程。
与其他线程共享内存(例如
SharedArrayBuffer
)
非常适合 CPU 密集型任务,例如处理数据或访问文件系统。由于 NodeJS 是单线程的,因此使用 Worker 可以使同步任务更加高效
最新问题
Microsoft Graph API - 是否可以使用客户端凭据流发送聊天消息?
即使配置正确,在 Windows 上如何调试 Logstash?
尝试将子类添加到 Fhir.Net 资源并使其序列化?
WCF序列化顺序问题
关系在 Laravel 和 MongoDB 中不起作用?
有没有办法加入S3存储桶和前缀?
在不同文件中表达路由器和控制器
无法执行 Junit 参数化测试执行获取 java.lang.Exception:类上没有公共静态参数方法
重命名 Azure Active Directory
如何使用 Win32 API 正确、安全地打印到 stdout/stderr?
Kotlin 中的通知永远不会显示
Python - 用第一个条目减去日期?
将数字字符串转换为格式化的电话号码
Jruby - Rails 应用程序和 sidekiq 在同一个 jvm 实例上
从 pyvista 导出 pointset.UnstructedGrid 数据作为 STL 文件
在 Javascript 中悬停特定 div 时切换固定标题的类
form-select Bootstrap 5.3.3:如何调整宽度以调整 op 选项值的大小?
使用 xpath 和 beautifulsoup 进行链接提取不起作用
如何在google协议缓冲区文件(proto3到gRPC)中表示嵌套数组?
控制台属性和注册表中的字体大小数量不同
© www.soinside.com 2019 - 2024. All rights reserved.