我剛剛學習如何使用clock_getres(網上任何地方几乎沒有好的文檔)。我的代碼如下所示:timespec.tv_sec總是返回0
timespec now;
clock_getres(CLOCK_REALTIME,&now);
std::cout<<statut_cast<int>(now.tv_sec)<<","<<static_cast<int>(now.tv_nsec)<<std::endl;
無論何時我運行此代碼,輸出始終是0,1 任何人都可以解釋爲什麼這不工作?
我剛剛學習如何使用clock_getres(網上任何地方几乎沒有好的文檔)。我的代碼如下所示:timespec.tv_sec總是返回0
timespec now;
clock_getres(CLOCK_REALTIME,&now);
std::cout<<statut_cast<int>(now.tv_sec)<<","<<static_cast<int>(now.tv_nsec)<<std::endl;
無論何時我運行此代碼,輸出始終是0,1 任何人都可以解釋爲什麼這不工作?
使用clock_gettime
返回當前時間,而不是clock_getres
,它返回時鐘的分辨率。
http://pubs.opengroup.org/onlinepubs/009604599/functions/clock_getres.html:
的
clock_getres()
函數將返回任何時鐘的分辨率。
clock_gettime()
函數將返回指定時鐘的當前值tp
,clock_id
。
這是正確的行爲 - 輸出爲0,1
,因爲您試圖獲得分辨率的時鐘具有納秒分辨率。因此,now.tv_nsec=1
和now.tv_sec=0
。如果它沒有納秒分辨率,輸出將是0,0
。
這是正確的行爲。你想做什麼? –
statut_cast - 從來沒有見過以前你確定這是真實的代碼。 –
mathematician1975
也許在你的系統上OS決定告訴你時鐘分辨率是1ns? –