PHP代码解释
谁能解释一下usleep或sleep如何帮助卸载CPU。PHP代码解释,php,Php,谁能解释一下usleep或sleep如何帮助卸载CPU。 我已经编写了如下示例代码 while (1) // check if the data file has been modified { usleep(10000); // sleep 10ms to unload the CPU** clearstatcache(); $currentmodif = filemtime($filename); } 如果运行usleep(),CPU将不会花费时间等待。 相反,它将设置一个计
我已经编写了如下示例代码
while (1) // check if the data file has been modified
{
usleep(10000); // sleep 10ms to unload the CPU**
clearstatcache();
$currentmodif = filemtime($filename);
}
如果运行usleep()
,CPU将不会花费时间等待。相反,它将设置一个计时器,并在其他线程/程序上使用额外的时间 如果您编写的代码需要做大量的工作来消耗CPU时间,CPU将在这方面努力工作,而忽略其他任务,因为它认为自己正在做有用的工作。
如果您使用usleep,CPU(实际上是操作系统)知道没有什么有用的事情要做,并且会优先考虑其他工作 想象一下,你必须为某个事件等待8个小时。
您有两种选择:
- 每秒钟看一次手表
- 8小时后设置闹钟,然后睡觉或做其他事情
因此,第二种变体是
sleep()
和usleep()
。使用以下方法代替此操作:
确保使用
stream\u set\u blocking()
打开阻塞模式-这样在等待时就不会使用任何cpu。在什么条件下退出该循环?它不是“卸载”。睡眠只会使进程处于睡眠状态,并允许其他进程运行,因此,进程不会占用CPU时间片的100%(持续时间取决于各种因素)。这就是多任务处理的实现方式。