其实就是功课!
我们称之为time
的是进步。很久以前,事情 甚至没有数字。只是旅行的太阳和旅行中的星星给了一个关于时间的暗示 。后来,特别是自数字革命开始以来,Numbers 被分配到time
。 进展时间随着数字的增加而增加。对于所有不同的格式,我都没有多说,我说这些方案中的大部分在当时确实有一个orgin。例如,Unix epoche 是1970年1月1日00:00:00 UTC的时间。当然,这不是时间的开始,但是选择这些虚拟起源以将数字拟合成合理的数据结构。 Back to you question:
我们能捕捉当前时间吗?不,我们不会,我们永远不会。读取任何时钟将告诉我们光线离开时钟到达我们眼睛的时间。这可能是非常少的,但... 当有人问我们的时间,我们很高兴地告诉。但是,再次发生一些延迟,我相信我们会在不增加延迟的情况下同时告知。
了解物理过程后,我们可以延长光线到达我们的眼睛,延迟我们的大脑需要的时间,延迟我们说出的话语将需要达到要求的人的耳朵。
但是..........
那么现实世界的时间应用程序如何实现呢?没有THAT TIME
。时间取决于你在哪里,时间取决于围绕着你的重力,时间取决于你的速度,等等。
但是.........
这不是因为时间流逝而发生的事情。不,时间让事情发生!
Again back to your question:
通常在软件问题上,时间问题基本上是关于进度和/或同步的问题。你想比较一下。 基本上有两种可能的calls
给提供这种进程的资源,称为time
:first call
将在您拨打电话时返回time
。但是你需要考虑到你会在稍后得到结果。所以你得到的时间有点过去了。 second call
返回呼叫返回的time
。这是一个稍微不同的实现,因为这样的函数必须知道它自己的服务需要多长时间。这可能只适用于某些校准。
这是两个主要调用。
当涉及到resolution
(再次回到你的问题),我想排除选择有一个原子钟连接到您的计算机。假设您是现成的超市电脑 的拥有者。它可能运行在几GHz。您可能观察到的最高频率可能是CPU频率。比如说4GHz,这样的频率会导致计数器在纳秒内增加4倍,即250皮秒的时间分辨率。所以一般来说你可能会说有亚纳秒的分辨率。在实践中,常用的高频计数器在MHz范围内,这将给出100ns单位范围内的分辨率。
但是......
这些高频率可以用作时间的标尺吗?短期内他们可以!但从长远来看,它要复杂得多,因为这些时间源必须与常见时间源(例如PC时间)锁相。高频计数器确实存在明显的错误,这将导致许多美国的相位漂移。这只能通过小心校准来克服。适当的校准可以允许将高频计数器锁相到系统时间。
一旦您在几微秒范围内准确的时间源,您可以以不同的方式诊断代码的行为,因为您可以预测潜在的延迟。
总结(哲学方法):
- 时间,使事情发生。
- 时间
is
永真,或者表示真值
- 考虑与时间相关的任何值表示在过去
- 时间有没有这样的事情
actual time
在实践
- 最后,当你说:
Time can never be completely accurate
(什么都可以!)
仔细看看Windows的高分辨率时间服务的实现可以找到Windos Timestamp Project。
也许你可以给出一个“真实世界的时间应用程序”的例子,这将显着受延迟几个处理器周期的影响? – deceze
Linux的ntpd守护进程?制导系统? – atx