C#中DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()短时间返回相同值原因咨询
问题原因解析
系统时钟分辨率限制:
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()返回的是Unix纪元到当前时间的毫秒数,但操作系统的系统时钟并非以1毫秒为精度更新。比如Windows系统默认时钟分辨率约为10-15毫秒,系统每隔十几毫秒才会刷新一次时钟数值。如果连续调用该方法的间隔小于这个刷新周期,所有调用都会拿到同一个时钟快照值。代码执行速度极快:连续的
Console.WriteLine调用在CPU上执行的速度非常快,几乎瞬间完成,这些操作全部处于同一个毫秒计时单位内,所以得到的毫秒数自然相同。
如果要验证这个结论,可以试试在调用之间加入极短延迟(比如await Task.Delay(1)),或者使用更高精度的计时方式,比如DateTimeOffset.UtcNow.Ticks(精度为100纳秒),这时就能看到不同的数值了。
内容的提问来源于stack exchange,提问作者Arluku
相关产品推荐
相关产品推荐

