我们的代码是用C++ 11(VS2012/Win 7-64bit)编写的.C++库提供了sleep_for我们使用的功能.我们观察到C++ sleep_for有时会出现大的超调.换句话说,我们请求睡眠15毫秒,但睡眠结果是例如100毫秒.当系统负载很高时,我们会看到这一点.
我的第一反应是:"当然,如果系统上有很多负载而其他线程正在使用CPU,那么睡眠"需要更长时间".然而,"有趣"的是,如果我们用sleep_forWindows API"Sleep"调用替换,那么我们就不会看到这种行为.我还看到sleep_for水下的函数调用了Window API Sleep方法.
sleep_for状态的文档:
该函数至少在Rel_time指定的时间内阻塞调用线程.此函数不会抛出任何异常.
从技术上讲,功能正在发挥作用.但是我们没想到看到C++ sleep_for和常规Sleep(Ex)函数之间存在差异.
有人可以解释这种行为吗?