2015-02-10 39 views
0

我希望格式化ns和ns_old,以便驗證是否服從設置的inter_arrival(即,如果我給inter_arrival = 10,它應該正確地反映在ns_diff中)。有人可以提供一些關於如何做到這一點的細節。格式化時間(使用timespec)以毫秒爲單位獲得正確的值

#include <iostream> 
#include <stdlib.h> 
#include <ctime>  // for getting time 
#include <sys/time.h> // for time 
#include <unistd.h> // for microsecond sleep 
#include <stdint.h> // for different integer types 
#include <stdint.h> 

uint64_t ns, sec, ns_old, ns_diff; 
struct timespec ts; 
int inter_arrival = 10; 

void ttime_func(){ 
clock_gettime(CLOCK_MONOTONIC, &ts); 
ns = ts.tv_sec * 1000000000 + ts.tv_nsec; 
ns_diff = ns -ns_old; 

// writing to my output log file 
std::cout << ns_old << "\t" << ns << "\t" << ns_diff << "\t" << std::endl; 
ns_old = ns; 
usleep(inter_arrival); 
} 

int main() 
{ 

for(int i=0;i<15;i++) 
{ 
ttime_func(); 
} 

} 
+0

其中是ns_old的聲明和初始化? – Doonyx 2015-02-10 12:11:49

+0

對不起,我有一個大的代碼庫。所以簡化它 – user2532296 2015-02-10 12:14:25

+0

不幸的是,你通過刪除你所問的東西來「簡化」它。請發佈您的[_minimal testcase_](http://stackoverflow.com/help/mcve)。 – 2015-02-10 12:35:23

回答

1

根據任何睡眠功能,他們沒有像我們提到的那樣睡覺。正如我們提到的那樣,它「嘗試」睡覺。起牀時間有時不同。特別是,時間間隔太短,睡眠間隔的準確性降低。

+0

謝謝Sargi,我對我的應用程序的微秒級精度確定。那麼即使這樣,醒來的時間也不同? – user2532296 2015-02-10 14:10:41

+0

@ user2532296是的。即使微秒級別的睡眠喚醒時間也不同。地球上沒有計時器以這種精確度被射擊。 – Doonyx 2015-02-10 20:54:36

相關問題