线程函数里是死循环,其中需要sleep 1ms,即1ms周期执行死循环。但是经示波器测试发现至少10ms以上。
【已测试的方法】
Sleep(1); //Windows api
WaitForSingleObject(hThread, 1); //Windows api
std::this_thread::sleep_for(std::chrono::milliseconds(1)); //c++ api
【原因分析】
sleep 1,暂停它至少1毫秒。即告诉操作系统将线程放入睡眠队列中,一旦过了1毫秒,就应该认为该线程有资格再次执行。但这仍然取决于操作系统是否能调度您的线程,这可能需要另外10ms (或更多,或更少,取决于各种因素)。
【结论】
目前没有发现精准办法,sleep是为了降低cpu消耗。
【参考】
Sleep(1)不准,实际延时16ms_sleep时间不准_无瑕剑客的博客-CSDN博客
c++11 this_thread::sleep_for至少十几毫秒的解决办法_c++ sleep_for 最小时间-CSDN博客
标签:c++,api,线程,sleep,10ms,死循环 From: https://www.cnblogs.com/xixixing/p/17789993.html