有的時候程序中需要使用死循環,比如消息監聽就要用一個死循環,直到受到消息請求關閉才可能跳出循環。
一個 while(true){} 的循環中即便循環體是空的,也會占用幾乎一整個 CPU 核心。為了降低死循環帶來的CPU占用,可以考慮在其中加入 Sleep(1) 調用來降低占用 while(true){ Sleep(1) } 。原理是 Sleep(1) 會釋放 CPU 一小會兒。雖然參數設置的是1毫秒,但是CPU通常以納秒為單位運行,於是對於整個 CPU 核心來講這1毫秒已經是非常久了。通常情況下這樣的帶有睡眠的死循環的 CPU 占用率是不帶睡眠的死循環的1%以下。對於一般的程序而言這可能已經能夠解決問題了,但是對於消息非常密集的程序而言這可能導致消息響應速度慢。睡眠是針對線程而非進程的,這一點也要知道。