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

formatting time (using timespec) to get the right value in nano seconds

本文关键字:为单位 时间 使用 timespec 格式化      更新时间:2023-10-16

我希望格式化ns和ns_old,以便验证是否遵守所设置的inter_arrival(即,如果我给出inter_arreval=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();
}
}

根据任何睡眠函数,它们的睡眠都不像我们提到的那样。正如我们提到的那样,它试图入睡。起床时间不同。特别是时间间隔过短会导致睡眠间隔的准确性下降。