Windows API - Win32
一组适用于桌面和服务器应用程序的核心 Windows 应用程序编程接口 (API)。 以前称为 Win32 API。
65 个问题
在CPU占用率非常高的环境中(长期占用率100%)sleep()函数导致的线程挂起时间有没有可能远超设定值,比如期望sleep(30),实际线程挂起超过3秒。
Hello,
欢迎来到Q&A论坛。
根据文档:Sleep function
暂停当前线程的执行,直到超时间隔结束。
系统时钟以恒定的速率“滴答声”。 如果 dwMilliseconds 小于系统时钟的分辨率,则线程的睡眠时间可能小于指定的时间长度。 如果 dwMilliseconds 大于一个刻度,但小于 2,则等待时间可以是介于 1 和 2 个刻度之间的任意位置,依此而论。 若要提高睡眠间隔的准确性,请调用 timeGetDevCaps 函数来确定受支持的最小计时器分辨率,并调用 timeBeginPeriod 函数将计时器分辨率设置为其最小值。
我认为CPU占用率不会影响sleep()函数挂起的实际时间。
如果指定 0 毫秒,线程将放弃其时间段的剩余时间,但仍保持就绪状态。 请注意,不保证就绪线程立即运行。 因此,线程可能在睡眠间隔过后一段时间后才运行。
Thank you.
Jeanine