簡體   English   中英

linux-在多處理器系統上以微秒精度打印當前時間

[英]linux - print current time with microsecond precision on multi-processor system

如何以微秒(或更優的納秒)精度打印當前系統時間? 我需要這段時間在所有系統處理器之間保持一致。 如果這不可能,那么我希望所有處理器內核之間保持一致。

我嘗試過clock_gettime(CLOCK_REALTIME但我懷疑至少在不同處理器上運行時它會產生不同的結果。

在我看來,您真正想要的是CLOCK_MONOTONIC_RAW (或者只是CLOCK_MONOTONIC )。 原始時鍾測量從固定點開始的時間,並查詢基於硬件的純時鍾。 在Linux上,此固定時間點是啟動時間。 系統時間的更改不會影響此時鍾(夏季/冬季等)。

您可以通過調用clock_getres(clockid_t clk_id, struct timespec *res);來檢查系統中時鍾的分辨率clock_getres(clockid_t clk_id, struct timespec *res);

gettimegetres采用一個timespec結構,該結構包含兩個整數:秒和納秒。 因此,軟件就在那里,您只需要一個能夠提供納秒分辨率的(硬件)時鍾即可。

手冊頁的兩個功能:

http://man7.org/linux/man-pages/man2/clock_gettime.2.htmlhttp://linux.die.net/man/3/clock_gettime

如果您可以閱讀Michael Kerrisk撰寫的“ Linux編程接口”一書,請查看第23章第5段(POSIX時鍾)。 在基本的Linux編程方面,這本書給我的答案甚至超過StackOverflow!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM