首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS中的多线程与分叉进程

NodeJS中的多线程与分叉进程
EN

Stack Overflow用户
提问于 2019-05-17 06:54:25
回答 1查看 3.1K关注 0票数 13

我正试图找到一种更好的方法来使用NodeJS运行一些与cpu绑定的任务。据我所知,有两个选项,叉进程工螺纹。因此,我在它们之间运行了一个基准,并发现fork进程更快。

所以,我有一些问题要问:

  1. 为什么分叉处理方法更快?
  2. 工作线程无用吗?或者,工作线程的优势是什么,消耗的cpu/内存更少?

我使用节点v10.15.3在MacOS(2.2 GHz Intel Core i7,16 GB 1600 MHz DDR3)上运行代码

基准代码在我的要旨中:

如您所见,线程池库微作业和进程池库节点-工人场在我的代码中使用。运行的cmd是:node --experimental-worker benchmark.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 07:22:46

我认为来自https://github.com/nodejs/help/issues/1920的@gireeshpunathil的评论会有很大帮助:

没有计算哪种方法更快的单一公式。它取决于若干参数:

  • 作业本身的运行时间。
  • 工作与产卵代码的交互
  • 机器特性,特别是cpu、内存和调度。

分叉使用本机叉和exec,这比线程创建重。使用新的v8、隔离、libuv等创建一个新的节点实例,worker不创建新的节点实例。如果需要,分叉进程使用IPC通道与分叉进程对话。工作人员使用内存缓冲区。

所以:

  • 如果与进程创建相比,微作业的执行时间太短,worker方法将更快。
  • 如果工作与司机沟通,通信的频率和通信成本将决定胜利者。
  • 如果作业运行的时间和独立代码一样长,并且没有交互,那么fork方法最终将被证明更快(我认为) 在这里发生)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56181096

复制
相关文章

相似问题

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