在Windows环境下,是否有任何方法可以让程序休眠约1微秒?经过研究和阅读许多线程和各种网站后,我没有看到这是可能的。由于调度程序似乎是限制因素,并且它在1毫秒级别操作,所以我认为如果不使用实时操作系统,则无法完成。
在Windows环境下,是否有任何方法可以让程序休眠约1微秒?经过研究和阅读许多线程和各种网站后,我没有看到这是可能的。由于调度程序似乎是限制因素,并且它在1毫秒级别操作,所以我认为如果不使用实时操作系统,则无法完成。
这可能不是最便携的,而且我自己也没有使用过这些函数,但是在此链接的高分辨率计时器部分和块中可能可以使用信息:QueryPerformanceCounter。
尽管Windows被认为不是“实时”操作系统,但事件可以以微秒分辨率生成。在其他地方已经描述了使用系统时间(file_time)和性能计数器频率的组合。然而,仔细实现并注意处理器亲和力和进程/线程优先级,就可以打开微秒分辨率定时事件的大门。
由于Windows调度程序和Windows计时器服务依赖于系统中断机制,因此微秒只能通过轮询进行调整。特别是在多核系统上,轮询不再那么丑陋。而且轮询只需要持续最短的可能中断周期。多媒体计时器接口允许将中断周期降至约1毫秒,因此可以接近所需的(微秒分辨率)时间,并且轮询最多持续1毫秒。
我在Windows上实现了微秒分辨率时间服务、测试代码和详细说明,可以在位于windowstimestamp.com的Windows Timestamp项目中找到。