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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 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
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
JavaScript实现职责链模式概述
2018/01/25 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
python 循环while和for in简单实例
2016/08/16 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
python把1变成01的步骤总结
2019/02/27 Python
python print出共轭复数的方法详解
2019/06/25 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
详解python tkinter 图片插入问题
2020/09/03 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
会计专业自我评价
2014/02/12 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
生日庆典策划方案
2014/06/02 职场文书
2015年安全月活动总结
2015/03/26 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js