开始体验一些实时线程。我刚刚通过调用usleep(TIME)让我的线程进入睡眠状态。这将保证线程至少休眠一段时间。我现在用TIME= 10ms进行测量,得到了一个期望值为µ=10,1ms的高斯函数,第二次测量的时间= 1us:我在4us处得到了一个大峰值。
那么为什么第二个测量值不是高斯呢?我的第一个想法是,线程并不是真正的休眠,而是使一个忙碌的等待。正如here (old beahavior)所说的,没有忙碌的等待。如何解释这两条曲线呢?
发布于 2012-03-12 21:36:36
因为定时函数的分辨率。你自己说的,它保证你至少能睡上一段时间。为什么它不能保证睡眠的时间是准确的,因为它很可能以4微秒的间隔运行。
man page也提到了这种现象:
休眠可能会因任何系统活动或根据系统计时器的粒度处理呼叫或所花费的时间而稍微延长。
发布于 2012-03-12 21:36:50
这可以用函数调用的开销和等待较小间隔的不同方法来解释。您可以考虑一个常量,即无法避免的延迟,但对于更大的等待,可以减去。
https://stackoverflow.com/questions/9667988
复制相似问题