网络问题

我现在使用UDP协议,进行网络数据发送每隔20ms发送一次,每次大约200字节,但是在我发送过程中,通过网络监视,发现数据发送并非等间隔,有时发送间隔少于20ms,有时大于20ms,而且会大得很多,超过30ms才发送出去,因为我们要求的实时性必须在20ms左右,上下不能超出5ms.我该怎么办 ?希望各位高手给预帮助。

这是QNX4还是QNX6啊?

1)提高你的进程的优先级,确保没人可以抢占你。
2)用arp设静态arp表项,确保arp缓存没有被清掉。
3)可以用QNX6的Instrumented Kernel来检查到底是谁占用了你的时间。

谢谢 xtang:
是qnx6.3
我是这样做的,通过采集卡中断程序线程,由他创建一个数据处理线程,我在处理线程里通过UDP协议发送数据,根据采集卡的频率,应该是20ms发送一次,通过测试,并不是20ms等间隔。是不是中断线程等的影响问题。
arp 怎么用?arp表项是什么东西?
Instrumented Kernel 怎么用?

没有太懂,什么叫“采集卡中断程序线程,由他创建一个数据处理线程”?难道每次都要pthread_create() ?

arp是一个程序,可以在Utilities Reference里找到用法。arp缓存被清的影响是大约每隔
20分钟你会有一个间隔较长的包。

Instrumented Kernel是一个特殊的kernel,在文档里也叫System Profiling吧。通过它,
可以收集系统内的状态变化,中断发生等事件。

如果是用定时器,我想应该跟系统的TICKSIZE有关系,比如TICKSIZE是10MS的话,那么定时的误差就是10MS,就是说你定时的20MS实际会有10MS或30MS的情况发生。
这是我看QNX的GETTING START得到的信息,如果有出入还请MR.XTANG指正。

如果用中断产生定时,我就不清楚了。