官方文档:https://nodejs.org/api/child_...
关于进程
我们知道,nodejs是在V8 引擎上构建的,所以它也是运行在一个单进程的单线程上。
这样程序是单一的,没有多线程,没有锁,没有线程同步这样那样的问题。操作系统在调度时候也少了上下文切换。
node中一个进程对应一个核
但是现在的CPU都是多核的,真正的服务器(非VPS)还是多CPU的
那我们该如何利用多核CPU服务器?
单线程执行的node,在线程抛出异常没有被捕获时候,会引起整个系统的崩溃
如何保证进程的健壮性和稳定性?
child_process
nodejs是一种单线程模型,我们的javascript程序会运行在单个进程的单个进程上
,但是,使用nodejs的child_process
模块可以实现多进程任务。利用child_proces
s可以创建子进程,实现子进程和主进程之间的通信。
Thechild_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 thechild_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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。