【发布时间】:2012-08-18 19:01:30
【问题描述】:
对于 linux/delay.h 中可以在用户空间中使用的 udelay 之类的函数有什么建议吗?
从用户空间,我想每 10 微秒生成一次事件。准确性不是很重要,但我希望尽可能接近。像 usleep 这样的东西不起作用,因为上下文切换开销。现在我有一个繁忙的等待循环,它使用 clock_gettime 和 CLOCK_MONOTONIC 时钟,它不断地将当前时间与开始循环之前的时间进行比较,并在经过的微秒数过去后返回。它比使用 usleep 效果好得多,但是如果不编写内核代码(或切换到实时 linux),我能做得更好吗?谢谢。
【问题讨论】:
-
Linux内核为内核线程实现了一些
delay和sleep函数,任何小于10us的延迟或睡眠实现都是通过忙循环来实现的。因此,即使是内核文档也建议忙于等待小于 10us 的延迟,用户空间如何找到更好的方法。