在过去的 20 分钟里,我一直在研究空循环,其目的只是等待条件变为真。
我有一个名为“waitForLoaded”的函数,它是由 CreateThread 创建的线程。
功能:
void waitForLoaded(){
while(!isLoaded){
Sleep(500); // < my question
}
Sleep(500); //sleep another 500ms to ensure everything is loaded.
//continue on here
}
我使用 Sleep(500) 在 CPU 上很容易,因为我相信使用 0 或 1 会耗尽处理器。
我在很多人中看到过使用“睡眠(0)”的代码,但我不明白为什么不只是不睡觉,而是做“while(condition){} ..”
我找不到任何关于哪个对 CPU 更友好的可靠答案,所以我在这里问人们,忙等待与 0 毫秒、1 毫秒或 500 毫秒有什么区别,哪个对 CPU 更友好。
在我看来,最好至少睡半场,这几乎不会被用户注意到。