Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP代码解释_Php - Fatal编程技术网

PHP代码解释

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将不会花费时间等待。 相反,它将设置一个计

谁能解释一下usleepsleep如何帮助卸载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%(持续时间取决于各种因素)。这就是多任务处理的实现方式。