c++ - 如何在 Windows 上使线程 sleep 时间少于一毫秒

标签 c++ windows winapi sleep

在 Windows 上,我遇到了一个在 Unix 上从未遇到过的问题。这就是如何让线程休眠不到一毫秒。在 Unix 上,您通常有多种选择(sleep、usleep 和 nanosleep)来满足您的需求。然而,在 Windows 上,只有毫秒粒度的 Sleep

在 Unix 上,我可以使用 select 系统调用来创建非常简单的微秒 sleep :

int usleep(long usec)
{
    struct timeval tv;
    tv.tv_sec = usec/1000000L;
    tv.tv_usec = usec%1000000L;
    return select(0, 0, 0, 0, &tv);
}

如何在 Windows 上实现同样的效果?

最佳答案

这表明对 sleep 功能的理解有误。您传递的参数是 sleep 的最少时间。不能保证线程会在指定的时间后唤醒。事实上,线程根本不会“唤醒”,而是由 OS 调度程序选择执行。调度程序可能会选择等待比请求的 sleep 持续时间长得多的时间来激活线程,尤其是当另一个线程此时仍处于事件状态时。

关于c++ - 如何在 Windows 上使线程 sleep 时间少于一毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85122/

相关文章:

c++ - 如何在 C++ 中找到连接到 USB 端口(HID 或磁盘驱动器)的设备

c++ - 确保单个实例并为 Windows C++ 控制台应用程序传递参数的正确方法

c++ - 可靠的 UDP 实现

c++ - 在 Visual C++ 中使用的简单的面向对象的 2D 图形框架?

windows - 如何在 if 子句中安全地回显变量的值而跳过双引号?

windows - 我可以使用 EmacsW32 显示不同框架的不同图标吗?

c++ - seekg 和 tellg 不兼容

c++ - Boost Log - 为什么不编译?

windows - 从 Windows 应用商店取消发布应用程序并为当前用户强制卸载

c++ - 获取 CPU 温度