了解 WinAPI Sleep() 函数持续时间的差异
当以 1 毫秒为参数调用 WinAPI Sleep() 函数时,据观察,线程实际上暂停的时间要长得多,通常约为 15 毫秒。这种现象引起了人们对潜在系统问题的担忧。
Windows 中的时间量化
Windows 采用时间量化机制进行线程调度。这意味着系统以离散间隔(称为量子)调度线程。这些间隔的确切持续时间因多种因素而异,包括 Windows 版本和版本。平均而言,Windows 7 的运行时间量约为 15.6 毫秒。
对 Sleep() 持续时间的影响
作为时间量化的结果,任何非零值提供给 Sleep() 的延迟参数向上舍入到最接近的量。这解释了为什么 Sleep(1) 调用实际上将线程暂停 15 毫秒,这是最接近 1 毫秒的时间量。
验证
验证此行为,您可以执行提供的代码片段。根据系统的计时器分辨率设置,运行代码可能会产生不同的结果。如果系统范围的计时器分辨率已手动设置为 1 毫秒,您可能会观察到较短的睡眠持续时间。然而,默认情况下,Windows 7 使用 15.6 毫秒的计时器分辨率,导致观察到的睡眠时间延长。
结论
Sleep() 函数的差异持续时间归因于 Windows 线程调度程序中固有的时间量化机制。这种向上舍入可确保线程调度高效且可预测地执行,从而防止潜在的线程调度冲突。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3