小编Tho*_*ite的帖子

空循环等待条件(忙等待)

我花了最后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.

在我看来,最好做至少一半的睡眠,这是用户几乎无法察觉的.

c++ sleep while-loop conditional-statements busy-waiting

3
推荐指数
1
解决办法
6342
查看次数