gpt4 book ai didi

javascript - 为什么 node.js 可以在 if 语句中调用 cluster.fork()?

转载 作者:搜寻专家 更新时间:2023-11-01 00:41:01 26 4
gpt4 key购买 nike

对于一个典型的 C 程序,我们做这样的事情来创建一个新进程:

int main(void)
{
pid_t childPID;

childPID = fork();

if(childPID >0){
do something
}
else if(childPID == 0){
do something
}
else {
do something
}
}

但是在node.js程序中,fork通常是在if语句中完成的:

var cluster = require('cluster');

if (cluster.isMaster) {
do something
cluster.fork()
}
else{
do something for the child process
}

为什么我们可以在 Node.js 的 if 语句中创建子进程?为什么子进程不跳过else block ?

谢谢!

最佳答案

这是因为 C fork() 和 node.js cluster.fork() 的工作方式不同。

在 C 中,fork() 创建当前进程的精确副本(fork() 返回值除外),然后从该点继续执行两个进程当 fork() 被调用时。

在 node.js 中,cluster.fork() 使用相同的 .js 入口点生成新的 node.js 工作进程,但使用稍微不同的环境。它还建立了一个IPC用于在主进程与其工作进程之间传递消息/文件描述符的 channel 。

关于javascript - 为什么 node.js 可以在 if 语句中调用 cluster.fork()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34493852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com