使用clock_gettime()获得不一致的结果

时间:2015-09-08 12:02:00

标签: c pthreads shared-memory

我目前正在研究共享内存我想计算所需的时间      要写入的thread1和要从共享内存中读取的thread2。为此我用过:

 clock_gettime(CLOCK_REALTIME,&start)
在thread1中

,从thread2读取后。我再次打来电话:

 clock_gettime(CLOCK_REALTIME,&end) 

阅读和写作所需的时间可以通过以下方式计算:

 dt = (double) (end.tv_sec - start.tv_sec) +
((double) (end.tv_nsec - start.tv_nsec) / 1000000000.0);

但每次我运行该程序时,我都会得到不同的结果。      我做错了什么?

1 个答案:

答案 0 :(得分:2)

我之前使用过这种测量方法,你没有做错任何事。即使您的日程安排正确,您的输出也会一直波动。

如果线程没有被另一个进程中断,我以前的开销大约是250微秒,但我想这也非常依赖于CPU的能力。

对于开销:尝试使用空体测量几百/千次,检查最低(最少中断)输出以检查开销。

对于您的结果:尝试相同并再次采用最低值,这样您就可以接近您正在寻找的实际值。请记住,单个读写可能无法快速测量。