加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

深入理解Node.js 进程与线程(8000字长文彻底搞懂)

发布时间:2019-08-16 05:07:04 所属栏目:建站 来源:koala
导读:副标题#e# 前言 进程与线程是一个程序员的必知概念,面试经常被问及,但是一些文章内容只是讲讲理论知识,可能一些小伙伴并没有真的理解,在实际开发中应用也比较少。本篇文章除了介绍概念,通过Node.js 的角度讲解进程与线程,并且讲解一些在项目中的实战

在进行 compute 计算时创建子进程,子进程计算完成通过 send 方法将结果发送给主进程,主进程通过 message 监听到信息后处理并退出。

  1. fork_app.js 
  1. const http = require('http'); 
  2. const fork = require('child_process').fork; 
  3.  
  4. const server = http.createServer((req, res) => { 
  5.     if(req.url == '/compute'){ 
  6.         const compute = fork('./fork_compute.js'); 
  7.         compute.send('开启一个新的子进程'); 
  8.  
  9.         // 当一个子进程使用 process.send() 发送消息时会触发 'message' 事件 
  10.         compute.on('message', sum => { 
  11.             res.end(`Sum is ${sum}`); 
  12.             compute.kill(); 
  13.         }); 
  14.  
  15.         // 子进程监听到一些错误消息退出 
  16.         compute.on('close', (code, signal) => { 
  17.             console.log(`收到close事件,子进程收到信号 ${signal} 而终止,退出码 ${code}`); 
  18.             compute.kill(); 
  19.         }) 
  20.     }else{ 
  21.         res.end(`ok`); 
  22.     } 
  23. }); 
  24. server.listen(3000, 127.0.0.1, () => { 
  25.     console.log(`server started at http://${127.0.0.1}:${3000}`); 
  26. }); 
  1. fork_compute.js 

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读