如何确保nanosleep在我的Linux系统中工作

时间:2014-04-08 08:20:33

标签: c++ linux boost performance-testing chrono

我已经检查过我的系统支持microsec precision how to make system support nanosec precision 使用boost计时器我能够以微精度Print current time in microsec

打印当前时间

现在,当我检查nanosleep / usleep是否正常工作时,我运行此程序。

这是我的program1

Print current time in microsec 
usleep(1); // sleep for 1 microsec
Print current time in microsec 

这是我的输出

01:43:38.799150
01:43:38.799393

当我运行这个程序2时

struct timespec delay;
delay.tv_sec = 0;
delay.tv_nsec = 1000;

Print current time in microsec 
nanosleep(&delay, NULL);
Print current time in microsec 

我得到了这个输出

01:48:25.919269
01:48:25.919838

我预计当前时间只有1微秒的差异,而实际上我的差异超过100微秒。 什么原因?

我怀疑我的系统是否正确执行usleep / nanosleep虽然usleep(1)也间接称为nanosleep(1000)

我正在使用g ++,linux。任何帮助或见解都会很棒并且事先感谢。

0 个答案:

没有答案