std :: this_thread :: sleep_for()有没有虚假的唤醒?

And*_*rus 8 c++ sleep stl thread-sleep c++11

注意,这不是一个问题std::condition_variable::wait_for().我知道可以假装醒来.

我的程序的行为表明这个问题的答案是肯定的,但是对于condition_variable案例,STL文档非常清楚.至少在cppreference.com上,this_thread的正确答案似乎是否定的.

编译器是gcc 4.8.1,如果这是一个缺陷.

And*_*owl 7

C++标准的相关部分(段落[thread.thread.this]/7-9)没有提及任何关于虚假唤醒的内容std::this_thread::sleep_for,与...不同 std::condition_variable::wait_for.

template <class Rep, class Period>
void sleep_for(const chrono::duration<Rep, Period>& rel_time);
Run Code Online (Sandbox Code Playgroud)

7 效果:阻止调用线程指定的相对超时(30.2.4)rel_time.

8 同步:无.

9 抛出:超时相关的例外(30.2.4).

这意味着您观察到的行为是不符合的.