格式化时间(使用timespec)以纳秒为单位获得正确的值

时间:2015-02-10 12:01:48

标签: c++ time number-formatting

我希望格式化ns和ns_old,以便验证是否服从设置的inter_arrival(即,如果我给inter_arrival = 10,它应该正确地反映在ns_diff中)。有人可以提供一些如何做到这一点的细节。

#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();
}

}

1 个答案:

答案 0 :(得分:1)

根据任何睡眠功能,他们不会像我们提到的那样睡觉。它试图&#39;我们提到睡觉唤醒时间不时有所不同。特别地,时间间隔太短,睡眠间隔的准确度降低。