QueryPerformanceCounter()
和Stopwatch.GetTimestamp()
都返回來自其中一個處理器的滴答計數。我想使用返回的64位整數值作爲唯一的ID,我想知道這些函數在進程中多次調用時是否可能返回相同的值。可以QueryPerformanceCounter()或Stopwatch.GetTimestamp()在後續調用中返回相同的值嗎?
我的進程一次最多隻能運行幾個小時,而這些唯一ID只是暫時使用 - 例如它們不會保存在數據庫中。上面的函數會被調用幾次,但是會有其他的函數調用。
該文檔指出,主板可能不支持高性能計時器,但我曾與之合作過的所有人都有此支持。我的代碼只能運行在32位或64位服務器硬件上,我相信無論如何總是支持高性能計時器(但我不確定)。
我可以編寫一個小測試程序來測試它,但該測試只會在我自己的計算機上有效,所以我正在尋找一個更確切的答案,如果有的話。
編輯:我知道這些功能都沒有設計生成唯一的ID,但只要他們產生日益增加的價值,它的罰款。我問這個問題不僅是出於技術原因,而且出於好奇。
我知道他們不是*設計* tp返回唯一的ID,但如果他們返回不斷增加的值,那很好。你爲什麼說他們可能會返回相同的值? – xxbbcc 2012-03-22 05:06:31
兩者都顯示一個計時器的當前值 - 兩個隨後的調用顯示相同的「時間」 - 在編輯的答案中運行樣本以查看結果。 – 2012-03-22 05:17:35
@xxbbcc當它很容易使用被設計爲生成唯一標識符的方法時,爲什麼你會用自己的方式來使用那些沒有設計的方法? – Yaur 2012-03-22 05:30:48