其實就是功課!
我們稱之爲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