c – 为什么nanosleep()和usleep()太慢了?
发布时间:2020-12-16 10:16:56 所属栏目:百科 来源:网络整理
导读:我有一个程序,生成数据包发送到接收器.我需要一种有效的方法,在每个数据包的发送之间引入一个小延迟,以免超出接收器.我试过usleep()和nanosleep(),但它们似乎太慢了.我已经实现了一个繁忙的等待循环并取得了更大的成功,但我知道这不是最有效的方法.我对任何
我有一个程序,生成数据包发送到接收器.我需要一种有效的方法,在每个数据包的发送之间引入一个小延迟,以免超出接收器.我试过usleep()和nanosleep(),但它们似乎太慢了.我已经实现了一个繁忙的等待循环并取得了更大的成功,但我知道这不是最有效的方法.我对任何人尝试做我正在做的事情感兴趣.其他人是否发现usleep()和nanosleep()能够很好地适用于此类应用?
谢谢, Danny Llewallyn 解决方法
睡眠函数在非常小的时间间隔内的行为在很大程度上取决于内核版本和配置.
如果你有一个“无滴答”内核(CONFIG_NO_HZ)和高分辨率的定时器,那么你可以期望睡眠非常接近你所要求的. 否则,您通常会以定时器中断的粒度结束睡眠.定时器中断间隔是可配置的(CONFIG_HZ) – 10ms,4ms,3.3ms和1ms是常见的选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |