本文主要和大家分享node.js玩转进程实例,node提供了child_process模块,我们再将经典的示例代码存为worker.js文件,如下:
let http=require('http');http.createServer(function (req,res) { res.writeHead(200,{'Content-Type':"text/plain"}); res.end('hello world')}).listen(Math.round((1+Math.random())*1000),'127.0.0.1');
登录后复制
将以下代码保存为master.js,并通过node master.js 启动它:
let fork=require('child_process').fork;let cpus=require('os').cpus();for(let i=0;i在*nix的系统下通过ps aux|grep worker.js查看进程数量。
这就是master-worker模式,又称主从模式。fork复制的进程都是独立的,这个进程有着独立而全新的V8实例。fork进程是昂贵的。
9.2.1 创建子进程
新版的node里面子进程也有同步子进程和异步子进程了,这里指的是异步子进程
- spawn():启动一个子进程
- exec():启动一个子进程,与spawn的不同是他有一个回调函数
- execFile():启动一个子进程来执行可执行文件
- fork():与spawn类似,不同点在于他创建node子进程只需要指定js文件即可spawn与exec、execFile的不同是,后两者创建时可以指定timeout属性设置超时时间,时间到之后可以杀死子进程。
exec与execFile不同的是,exec适合执行已有的命令,execFile适合执行文件。let cp=require('child_process');cp.spawn('node',['worker.js']);//没有回调函数cp.exec('node worker.js',function (err,stdout,stderr) {});cp.execFile('worker.js',function (err,stdout,stderr) {});cp.fork('./worker.js');登录后复制
9.2.2 进程间通信
parent.js:
let cp=require('child_process');let n=cp.fork(__dirname+ './worker.js');n.on('message',function (m) {});n.send({hello:'world'});登录后复制
相关推荐:
PHP进程间通信详解
以上就是node.js玩转进程实例的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2781058.html