完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如下图所属结构,5个线程,用到了3个消息队列,2个信号量,可行吗?不行就得用全局变量来控制了。 消息类型定义 typedef struct {
}message_t; 发送线程一个等待线程,一个接收线程 while(1)
// for(rt_uint8_t i=COMM_SN;i<24;i++) // { // if(SET_DAT.uc[COMM_SN]==1)break; // else // { // COMM_SN++; // if(COMM_SN>23)return; // } // }
//这是从接收线程读取队列,知道数据是否处理完成
这是接收线程 while(1)
|
|
相关推荐
6个回答
|
|
可以,别用 RT_WAITING_FOREVER,改成等待若干 ms 。然后判断返回值,如果是超时继续读下一个消息。如果不是超时进入消息处理。
|
|
|
|
写了一下,接收消息队列的时候,返回值是没读到,为什么没有挂起呢,反而执行接收队列语句后面的语句
|
|
|
|
??? 怎么会没有返回值。
永久阻塞等待变成定时等待,当然会返回执行后面的语句,你看上面我说了两句话,你只看了一句吗? 判断返回值,根据返回值是不是OK再处理“接收队列语句后面的语句” |
|
|
|
我的意思是返回值不是RTEOK,是0xFFFFFFFE,跟那些标志位都对不上。
|
|
|
|
0xFFFFFFFE 不就是超时?!!!
判断非 OK 返回值要用它的负值!!! if (ret == -RT_ETIMEOUT) { // timeout todo } |
|
|
|
就是-2,-RT_ETIMEOUT,异常的返回值都加了负号的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
489 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1823 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1142 浏览 0 评论
1620 浏览 0 评论
1424 浏览 0 评论
74726 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 13:22 , Processed in 0.672289 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号