任何人都可以解釋我如何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);
}
任何人都可以解釋我如何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);
}
如果您運行usleep()
CPU不會花時間等待。
相反,它會設置一個計時器,並使用在其他線程/程序的額外時間。
如果你寫代碼,做了很多工作燒掉CPU時,CPU會在那個努力,忽略了其他的任務,因爲它認爲這是在做無用功。
如果使用usleep
的CPU(實際上是操作系統)知道有做什麼有用的,將優先等工作。
想象一下,你必須要耐心等待8小時,一些事件。
你有兩個選擇:
所以sleep()
和usleep()
是第二個變體。
而不是做使用這個的:http://www.php.net/inotify
一定要使用stream_set_blocking()
打開阻塞模式 - 這樣你就不會使用任何CPU都在等待。
在什麼情況下,你退出這個循環? – zerkms
它不是'卸載'。睡眠只是讓你的進程進入休眠狀態,並允許其他進程運行,因此,你的進程不會佔用CPU時間片的100%(持續時間取決於各種因素)。這是如何實現多任務處理。 –
http://linux.die.net/man/3/usleep – mario