3-5多进程编写

多进程编写需要清楚的几个问题 创建了几个进程? 每个进程 $count 是多少? 每个进程从哪个地方开始运行代码的? fork 之后,每个进程的变量 $i, $count 的值是多少 ? 每个进程运行到哪一行语句结束? 示例一: 代码 <?php $count = 10; for ($i = 0; $i < 2; $i++){ $pid = pcntl_fork(); // step1-1 parent 创建子进程 child-1: count = 10, i = 0 // step3-1 cpu 调度 parent 创建子进程 child-2: count = 100, i = 1 // step5-1 cpu 调度 child-1 创建子进程 child-3: count = 11, i = 1 if ($pid == 0){ $count += 1; // step1-2 child-1 执行:count = 11, i = 1 // step4 child-2 执行: count = 101, i = 2 // child-2 最终结果:count = 101 // step6 child-3 执行:count = 12, i = 2 } else { $count *= 10; // step2 cpu 调度 parent:count = 100, i = 1 // step3-2 cpu 调度 parent:count = 1000, i = 2 for循环退出 // parent 最终结果:count = 1000 // step5-2 cpu 调度 child-1:count = 110, i = 2 // child-1 最终结果:count = 110 } } while(1){ fprintf(STDOUT, "pid=%d,count=%d\n", posix_getpid(), $count); sleep(3); } 分析: step1-1 parent 创建子进程 child-1:count = 10, i = 0...

2022-03-07 · 王二