我花了最后20分钟对空循环进行研究,其目的只是等待条件变为真.
我有一个名为"waitForLoaded"的函数,它是由CreateThread创建的一个线程.
功能:
void waitForLoaded(){
while(!isLoaded){
Sleep(500); // < my question
}
Sleep(500); //sleep another 500ms to ensure everything is loaded.
//continue on here
}
Run Code Online (Sandbox Code Playgroud)
我使用Sleep(500)在CPU上很容易,因为我认为使用0或1会耗尽处理器.
我在许多人看到过使用"睡眠(0)"的代码,我从来不明白为什么不能完全没有睡觉并且做"while(condition){} .."
我找不到任何更加CPU友好的可靠答案所以我在这里问人们,忙碌等待0ms,1ms或500ms之间有什么区别,哪个更适合CPU.
在我看来,最好做至少一半的睡眠,这是用户几乎无法察觉的.