Node学习记录:child_process

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

官方文档:https://nodejs.org/api/child_...

关于进程

我们知道,nodejs是在V8 引擎上构建的,所以它也是运行在一个单进程的单线程上。

这样程序是单一的,没有多线程,没有锁,没有线程同步这样那样的问题。操作系统在调度时候也少了上下文切换。

node中一个进程对应一个核

但是现在的CPU都是多核的,真正的服务器(非VPS)还是多CPU的

那我们该如何利用多核CPU服务器?

单线程执行的node,在线程抛出异常没有被捕获时候,会引起整个系统的崩溃

如何保证进程的健壮性和稳定性?

child_process

nodejs是一种单线程模型,我们的javascript程序会运行在单个进程的单个进程上,但是,使用nodejs的child_process模块可以实现多进程任务。利用child_process可以创建子进程,实现子进程和主进程之间的通信。

The child_process module provides the ability to spawn child processes in a manner that is similar, but not identical, to popen(3). This capability is primarily provided by the child_process.spawn() function:
const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

child_process提供以下同步和异步的方式创建进程

图片描述

其中 child_process.fork() 函数让我们实现进程的复制

其他常见API解释建议看文档 或者 这篇文章Nodejs进阶:如何玩转子进程(child_process)

execSync

clipboard.png

参考

exec 和 spawn 的区别
Node.js中spawn与exec的异同比较

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看