今天试验PHP CLI模式时发现一个有趣的现象:
由于CLI模式没有最大执行时间的限制,我写了一个while(1)循环来使当前程序一直运行。但是当循环中没有复杂性操作时,CPU占用率始终保持95%以上;而当循环中进行了诸如输出语句等具有明显消耗性操作时,CPU降到了20%。
我想这应该是linux内核对CPU的时间片轮询机制造成的,具体情况还没有去仔细想(该复习操作系统原理了-_-!)。
后来,因为及时性要求不是那么高,我在相应地方加上了sleep(1)让它间隔1秒执行一次。当它执行时,由于轮询时间片非常短,这次直接显示CPU占用率为0% ^_^
BTW:不知道windows内核是否采用同样机制,暂没有试验。