在我的 C 应用程序中,主进程派生出一个子进程,然后休眠 10 微秒,让子进程有时间做好准备。休眠期过后,父进程向子进程发送信号,开始监听指定端口。
这段代码在 CentOS6 中执行良好,只有少数情况下睡眠时间不足以让子进程在传递来自父进程的信号之前设置其信号处理程序。然而,当这段代码在具有相同系统规范的 CentOS7 中运行时,孩子始终未能及时安装其信号处理程序。我必须将睡眠时间增加到 10 毫秒(长 1000 倍)才能获得与 CentOS6 相同的性能。
我想知道在相同规格的硬件上相对于 CentOS 6 在 CentOS 7 中上下文切换如此缓慢的原因可能是什么?