当前位置: 技术问答>linux和unix
求教啊~~~如何让程序延迟几微妙??
来源: 互联网 发布时间:2016-12-08
本文导语: 重发pcap文件里面的数据包,但是发的太快 网卡处理不了丢了很多 所以我想在每发一个包后延迟个几微妙。。 usleep和nanosleep都不行 最小延迟单位都是4毫秒左右。。用空循环 换个平台就没法实现。。。哎 头疼啊~~...
重发pcap文件里面的数据包,但是发的太快 网卡处理不了丢了很多 所以我想在每发一个包后延迟个几微妙。。
usleep和nanosleep都不行 最小延迟单位都是4毫秒左右。。用空循环 换个平台就没法实现。。。哎 头疼啊~~~
请高手指教啊 。。。最好能详细一点 本人初学者。。。
感谢 orz
usleep和nanosleep都不行 最小延迟单位都是4毫秒左右。。用空循环 换个平台就没法实现。。。哎 头疼啊~~~
请高手指教啊 。。。最好能详细一点 本人初学者。。。
感谢 orz
|
这个。。。在上层基本实现不了。
上层的延迟基本上都是睡眠(要让出处理器),而基本上调度一次所需要的 时间最少为10个毫秒。
就是说从你开始延迟,到下次执行到这里,至少10个毫秒已经过去了。
可以做个底层模块,udelay几微秒,但不能保证呵,用户态切换到内核,内核切换到用户态可能也要花点时间,不过应该差不多可以实现了。
上层的延迟基本上都是睡眠(要让出处理器),而基本上调度一次所需要的 时间最少为10个毫秒。
就是说从你开始延迟,到下次执行到这里,至少10个毫秒已经过去了。
可以做个底层模块,udelay几微秒,但不能保证呵,用户态切换到内核,内核切换到用户态可能也要花点时间,不过应该差不多可以实现了。
|
|
基本是做不到的,我觉得你可以换个方法,你不一定要每个发包动作的间隔时间相同, 你只需要做到在100ms里发1M的包,这不相当于是以每秒10M的速率发送数据了。 因为收发都有缓冲,所以基本上可以达到你的要求.