我不确定Windows内核如何处理线程计时......
我在谈论DST以及影响Windows机器上时间的任何其他事件。
例如,如果内核使用与用于一天中的时间相同的“时钟”,则
(a)某人手动更改时间或
(b)与时间服务器的某些同步改变时间或
(c)夏令时开始或结束,系统已配置为响应这两个DST事件,
等等,
以任何方式受到影响的睡眠线程?即,内核是否以程序员无需的方式处理此类事件?
N.B。:对于非关键应用程序,这可能是关心?的情况。
对于关键应用程序,知道这个问题的答案很重要,因为的可能性必须为这样的异常条件编程。
谢谢
编辑:我想到了一个我在LINQPad 4中运行的简单测试。
测试包括让线程进入休眠状态,在线程进入休眠状态的同时启动手动计时器,然后(a)将时间向前移动一小时,然后进行第二次测试,移动时间回来两个小时...在两次测试中,睡眠时间不受影响。
底线:使用Thread.Sleep,无需担心影响时间的事件。
这是一个简单的c#代码:
Int32 secondsToSleep;
String seconds;
Boolean inputOkay;
Console.WriteLine("How many seconds?");
seconds = Console.ReadLine();
inputOkay = Int32.TryParse(seconds, out secondsToSleep);
if (inputOkay)
{
Console.WriteLine("sleeping for {0} second(s)", secondsToSleep);
Thread.Sleep(secondsToSleep * 1000);
Console.WriteLine("i am awake!");
}
else Console.WriteLine("invalid input: [{0}]", seconds);
答案 0 :(得分:8)
不,Thread.Sleep
不受影响。内核还以UTC为单位保留时间。时区和夏令时只是层层叠叠。