2013-05-03 60 views
6

睡眠如何使用cpu資源?睡眠怎麼吃CPU php

當您睡覺腳本時,它是否使用cpu的100%或0%?你可以解釋嗎?

據我所知,它增加了平均負載,但它如何使用CPU?

+2

這是簡單的測試。兩個控制檯:一個用腳本,另一個用「htop」或「top」或其他任何內容。你爲什麼不嘗試? – Bojangles 2013-05-03 12:59:51

+1

請親自看看https://github.com/php/php-src/blob/master/ext/standard/basic_functions.c#L4436 – 2013-05-03 13:05:32

+0

如果你問的原因是你已經使用了CPU Profiler ,這是通常發生的事情。例如,你有一個進入睡眠10秒的小程序。所以它的掛鐘時間是10秒。但是,執行此操作所需的CPU數量可能大約爲1微秒,其中990納秒可用於進入睡眠狀態並從睡眠中消失。因此,所用的CPU時間極少,睡眠時間爲99%。這讓很多人感到困惑。 – 2013-05-03 16:39:03

回答

14

sleep的工作方式取決於操作系統,因爲PHP功能sleepcalls into the appropriate runtime function實際上完成了它所說的任務。

For Windows,該功能是SleepExFor other operating systems這是POSIX功能sleep。在這兩種情況下,這些函數的文檔都清楚地表明睡眠線程在休眠期間不適合運行,因此即使它想要也不會佔用CPU資源。

+0

你也可以發佈這些文件的鏈接嗎? – 2013-05-03 19:35:53

+0

在linux情況下,進程不消耗CPU:http://unix.stackexchange.com/questions/22886/do-sleeping-processes-get-the-same-cpu-time/22887 – Alexey 2016-09-21 14:27:18