一、先给结论(核心观点)
父子进程“谁先执行”在 fork/exec 模型下本来就是不确定的,
正确的工程做法不是“猜顺序”,而是“显式同步”。
不确定性是设计前提,不是异常情况。
二、为什么“父子进程先后顺序无法确定”
以最典型的模型为例:
pid = fork(); if (pid == 0) { // child } else { // parent }内核行为是:
fork()返回后父子进程都变成 runnable
调度器决定谁先运行
调度顺序:
与 CPU
与负载
与抢占
与中断
与优先级
与实现细节
全部相关
POSIX 明确规定:父子执行顺序不保证