Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在时钟漂移期间,Windows C/Sleep()函数将如何运行?_C++_C_Windows_Sleep_Clock - Fatal编程技术网

C++ 在时钟漂移期间,Windows C/Sleep()函数将如何运行?

C++ 在时钟漂移期间,Windows C/Sleep()函数将如何运行?,c++,c,windows,sleep,clock,C++,C,Windows,Sleep,Clock,如果我运行类似Sleep(10000)的程序,并且在此期间系统时钟发生变化,那么线程是否仍会睡眠10秒的挂钟时间,或者更少或更多?也就是说,Sleep()函数是否将毫秒转换为硬件时钟信号?Sleep()与挂钟时间无关。它基于用于线程调度的同一个计时器 不过,由于系统时钟的频率以及超时时间过后您实际计划运行的时间,您通常不会睡10秒钟。据我所知,没有任何地方记录到这一点,但是,是的,您可以放心地假设是这样。如果不是这样的话,这将是相当破坏性的,日光转换一年发生两次。它是为等价的内核函数KeDela

如果我运行类似Sleep(10000)的程序,并且在此期间系统时钟发生变化,那么线程是否仍会睡眠10秒的挂钟时间,或者更少或更多?也就是说,Sleep()函数是否将毫秒转换为硬件时钟信号?

Sleep()与挂钟时间无关。它基于用于线程调度的同一个计时器


不过,由于系统时钟的频率以及超时时间过后您实际计划运行的时间,您通常不会睡10秒钟。

据我所知,没有任何地方记录到这一点,但是,是的,您可以放心地假设是这样。如果不是这样的话,这将是相当破坏性的,日光转换一年发生两次。它是为等价的内核函数KeDelayExecutionThread的Interval参数记录的:


指定等待发生的绝对或相对时间(以100纳秒为单位)。负值表示相对时间。绝对过期时间跟踪系统时间的任何变化;相对过期时间不受系统时间更改的影响

如果它们是独立的,那么如果在午夜(00:00:00)我睡觉(10000),五秒后(00:00:05),我将系统时钟重置为午夜(00:00:00),这是否意味着在睡眠(10000)醒来之前,墙上的时钟时间将过15秒?这种机制与Windows时间服务实现的漂移不同吗?睡眠不使用WTS。它基于系统时钟滴答声和滴答声频率。系统时钟的这种用法不应该与墙上的时钟混淆。