Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
IPC
线程安全
临界区
对于动态申请的IPC(邮箱,信号量),如何确保在释放的时候临界安全问题
发布于 2023-03-25 14:36:11 浏览:354
订阅该版
动态申请的邮箱信号量这些 到底要怎么释放才能安全 这种问题困扰我挺久的,确实也有别的原因比如设计容量的问题,导致这个mailbox只能用动态申请,没办法使用静态的(静态可能要同时存在很多很多个). 举个例子: 1.线程1动态申请了一个邮箱 放在全局变量里面 进行超时接收 2.线程2收到外部触发后检查到有这个全局邮箱的时候就转发 3.线程1超时的时候或者收到邮件后就删除这个邮箱 并把全局变量清掉. 临界问题就出在 线程1超时了 删除了邮箱 但是全局变量还没清空 ,这时候线程2收到外部触发就绪了开始跑 全局变量还在 拿来发的就出问题了 求解这种问题,或者是我的思路哪里有问题导致会遇到这种问题. ```c rt_mailbox_t mb = NULL; void thread1(void *param) { mb = rt_mb_create("123", 1, RT_IPC_FLAG_FIFO); // ...做了一些操作,比如发送一些数据,导致这个邮箱可能有邮件会回来 uint8_t *pdata = NULL; rt_mb_recv(mb, (rt_ubase_t *)pdata, 5000); // 从rt_mb_recv里面超时调度回来开始就一直有临界问题 rt_mb_delete(mb); mb = NULL; if (pdata) { free(pdata); } } void thread2(void *param) { while (1) { //...接收一些信息 比如说外部中断获得一些数据 uint8_t *pdata = malloc(16); if (mb) { rt_err_t Err = rt_mb_send(mb, (rt_ubase_t)pdata); if (Err) { free(pdata); } } else { free(pdata); } } } ```
查看更多
2
个回答
默认排序
按发布时间排序
宇宙码蚁
2023-03-25
接口与实现分离
不需要动态创建。 发送数据时,顺便加上时间戳,这样数据处理线程就知道是不是最新的了。 如果邮箱是满的,则取掉最旧的
winfeng
认证专家
2023-03-25
这家伙很懒,什么也没写!
rt_mb_recv(mb, (rt_ubase_t *)&pdata, 5000);
撰写答案
登录
注册新账号
关注者
0
被浏览
354
关于作者
YoHo.
这家伙很懒,什么也没写!
提问
3
回答
5
被采纳
0
关注TA
发私信
相关问题
1
使用临界区保护后可以使用等待队列吗
2
模拟I2C使用,线程调度貌似有问题
3
临界区和关中断,是否需要同时使用?
4
关于进入临界区后定时器的运行问题
5
进入临界区时, 中断可抢占?
6
全局开关中断为什么能同步?
7
进入临界区保护后,还能否使用ulog或者malloc这类带信号量的接口呢
8
由于将PRIMASK的值暂存在r0中,执行临界段代码时r0值会不会改变?
9
SMP下rt_interrupt_enter对非本地核心的影响
10
RTthread的临界区怎么理解
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部