完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
SYS/BIOS 版本:bios_6_33_06_50
NDK版本:ndk_2_21_01_38 尝试在recv()函数阻塞这段时间,执行另一个低优先级的任务,当有数据到来时又切换回来,但是发现一旦切换到低优先级的任务后,任务始终不切换回来了? 更详细的描述: 高优先级的任务TASK HIGH,里面只包含了一个tcp客户端程序,接收来自PC端网络调试助手TCP服务端发来的数据;低优先级的任务TASK LOW是一个死循环,里面没后调用任何会引起任务切换的API; ti工程师,recv()的特性能不能支持达到这个目的,如果能的话,我应该怎么修改程序? 通过ROV调试发现,TASK HIGH在TASK LOW执行时,一直处于阻塞状态。而且是阻塞在了一个信号量上,这个信号量是用一个16进制表示的,看不懂究竟代表的是什么意思;这个信号量是 wait forever状态,TI 工程师,这是不是代表TASK HIGH一直等待新的数据到来呢?recv()默认是没有数据到来的话会永远阻塞,当我设置套接字的接收超时时可以实现TASK HIGH和TASK LOW的相互切换了,但是这种方式明显感觉不合理?如当网络状况稍稍改变时就可能造成严重的丢包。 |
|
相关推荐
2个回答
|
|
我的理解,在没有数据时会pend等待信号量,此时其他任务可以抢占CPU,接收到有效数据后会释放信号量,接收recv所在任务在被调度后可以获取到信号量继续执行。你现在的情况应该是没有收到数据,信号量没有被post,所以recv一直在等待信号量,进而被block,这应该是正常的。
|
|
|
|
zbb9612 发表于 2018-6-21 12:11 问题已经解决,解决的办法是使用TaskCreate()函数替换Task_create()来创建取流和解码任务。另外System_printf()打印太耗时间了,会把recv()阻塞的时间几乎用完,因此各位朋友在调试的时候要慎用打印函数。 |
|
|
|
只有小组成员才能发言,加入小组>>
334 浏览 1 评论
528 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
773 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
649 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1126 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
56浏览 29评论
126浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
251浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
200浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
56浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:34 , Processed in 0.858847 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号