NodeJS父进程与子进程资源共享原理与实现方法


Posted in NodeJs onMarch 16, 2018

本文实例讲述了NodeJS父进程与子进程资源共享原理与实现方法。分享给大家供大家参考,具体如下:

实验目标:实现父进程与子进程间资源共享

使用模块:cluster

简介:建立node集群,实现多进程,利用child_process来实现IPC,解决多核利用率,提高性能。

原理:

1 Master-worker主从模式的多进程架构

2 fork()复制进程,充分利用cpu资源(根据内核数决定)

3 每个进程都有自己的区域,如果在各自区域内执行操作,资源并未共享。通过监听message事件和send实现消息传递,达到资源共享的效果

4  globalDataError为错误的资源共享方式, globalDataSuccess为正确的资源共享方式。

实现代码:

var cluster = require('cluster');
var cpus = require('os').cpus();
// 传递的事件名
var triggerEvent = {
    inc: 'inc',
    dec: 'dec'
}
// 错误的数据共享方式
var globalDataError = 0;
if (cluster.isMaster) {
  // 正确的数据共享方式
  var globalDataSuccess = 0;
  globalDataError++;
  // 启动多个进程,取决于内核数
  for (var i = 0; i < cpus.length; i++) {
    var worker = cluster.fork();
    worker.on('message', function(msg) {
      switch (msg) {
        case triggerEvent.inc:
          globalDataSuccess++;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
        case triggerEvent.dec:
          globalDataSuccess--;
          console.log('globalDataSuccess = ', globalDataSuccess);
          break;
      }
    });
  }
  console.log('Master globalDataError = ', globalDataError);
} else {
  globalDataError++;
  console.log('Worker globalDataError = ', globalDataError);
  process.send(triggerEvent.dec);
  process.send(triggerEvent.inc);
}

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
用nodejs访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 #NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 #NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 #NodeJs
nodejs实现连接mongodb数据库的方法示例
Mar 15 #NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 #NodeJs
nodejs acl的用户权限管理详解
Mar 14 #NodeJs
You might like
PHPMailer 中文使用说明小结
2010/01/22 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
Use Word to Search for Files
2007/06/15 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
前端性能优化建议
2020/09/17 Javascript
[07:12]2014DOTA2西雅图国际邀请赛 黑马Liquid专题采访
2014/07/12 DOTA
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python实现从百度API获取天气的方法
2015/03/11 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
Python定时任务随机时间执行的实现方法
2019/08/14 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
实习教师自我鉴定
2013/12/09 职场文书
施工材料员岗位职责
2014/02/12 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python