当前位置: 代码迷 >> VxWorks >> VxWorks同时使用TCP和UDP传输稍大数据量,导致send调用阻塞,请大家帮忙。解决办法
  详细解决方案

VxWorks同时使用TCP和UDP传输稍大数据量,导致send调用阻塞,请大家帮忙。解决办法

热度:6435   发布时间:2013-02-26 00:00:00.0
VxWorks同时使用TCP和UDP传输稍大数据量,导致send调用阻塞,请大家帮忙。
ppc8541,引出一个百兆网口和一个千兆网口。
现在仅使用千兆网口。
在一个任务中接受UDP包(组播),放入缓冲区,优先级高。
另一个任务中将缓冲中的数据通过TCP传给PC机,优先级低。

输入40Mbps码率的数据很快会导致TCP send调用阻塞,不到1分钟。
输入4Mbps码率的数据大约要几个小时,导致send调用阻塞。
用sem同步,信号量释放正常,计数信号量。

两个任务都用阻塞+select方式。

大家看看是为啥?急。

------解决方案--------------------------------------------------------
TCP和UDP是不是用的同一个缓冲区,缓冲区是否存在写满和读为空的现象
------解决方案--------------------------------------------------------
探讨
我把TCPsocket的缓冲设回默认的8192字节,输入80Mbps码率数据,已经跑了两个小时,目前正常。CPU空闲50%左右。
起初设的是250*1024字节,跑不到一分钟TCPsend就阻塞了,UDP接收正常。

缓冲区检查过了,加了保护应该没有问题。

没有加其他处理任务。

调两个任务的优先级没有改善。
  相关解决方案