2011-09-21 121 views
1

任何人都可以解釋我如何usleep睡眠有助於卸載CPU。
我寫了下面的示例代碼。PHP代碼解釋

while (1) // check if the data file has been modified 
{ 
    usleep(10000); // sleep 10ms to unload the CPU** 
    clearstatcache(); 
    $currentmodif = filemtime($filename); 
} 
+0

在什麼情況下,你退出這個循環? – zerkms

+0

它不是'卸載'。睡眠只是讓你的進程進入休眠狀態,並允許其他進程運行,因此,你的進程不會佔用CPU時間片的100%(持續時間取決於各種因素)。這是如何實現多任務處理。 –

+0

http://linux.die.net/man/3/usleep – mario

回答

2

如果您運行usleep() CPU不會花時間等待。
相反,它會設置一個計時器,並使用在其他線程/程序的額外時間。

如果你寫代碼,做了很多工作燒掉CPU時,CPU會在那個努力,忽略了其他的任務,因爲它認爲這是在做無用功。
如果使用usleep的CPU(實際上是操作系統)知道有做什麼有用的,將優先等工作。

0

想象一下,你必須要耐心等待8小時,一些事件。
你有兩個選擇:

  • 看看手錶每一秒
  • 設定的報警後8小時,去睡覺或者做別的事情

所以sleep()usleep()是第二個變體。

0

而不是做使用這個的:http://www.php.net/inotify

一定要使用stream_set_blocking()打開阻塞模式 - 這樣你就不會使用任何CPU都在等待。