硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2438|回复: 5
收起左侧

[RL-RTX] 关于RTX操作系统中,任务删除的疑问

[复制链接]

36

主题

1446

回帖

1554

积分

至尊会员

积分
1554
发表于 2019-4-25 10:17:02 | 显示全部楼层 |阅读模式
1.假设两个任务A和B,其优先级分别是1和2;假设任务A在运行中,这时任务B就绪,由于任务B优先级高于任务A,此时任务B执行。这个时候任务B执行删除任务A的函数。这种场景下能够安全删除任务A吗?会不会有隐患?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
发表于 2019-4-25 10:52:37 | 显示全部楼层
没问题。
回复

使用道具 举报

36

主题

1446

回帖

1554

积分

至尊会员

积分
1554
 楼主| 发表于 2019-4-25 12:25:00 | 显示全部楼层
回复

使用道具 举报

3

主题

105

回帖

114

积分

初级会员

积分
114
发表于 2019-4-27 11:50:07 | 显示全部楼层
本帖最后由 公仆 于 2019-4-27 11:53 编辑

如果此时线程A刚刚调用malloc申请了内存,且指向内存块的指针还没公开化,就会造成内存泄漏;同理,其它资源也可能会没有释放。这就是不要强制删除线程的原因。建议不要直接删除线程A,最好通知线程A,让A自己删除自己比较安全。

回复

使用道具 举报

3

主题

105

回帖

114

积分

初级会员

积分
114
发表于 2019-4-27 11:56:03 | 显示全部楼层
还有更夸张的情形会造成死锁:A线程调用malloc申请内存,而malloc底层利用互斥量排他的管理。如果A线程刚好获得了互斥量,然后切换到B而且被B删除了;因此互斥量再也不会被释放,以后malloc就废了
回复

使用道具 举报

36

主题

1446

回帖

1554

积分

至尊会员

积分
1554
 楼主| 发表于 2019-4-27 12:59:17 | 显示全部楼层
公仆 发表于 2019-4-27 11:56
还有更夸张的情形会造成死锁:A线程调用malloc申请内存,而malloc底层利用互斥量排他的管理。如果A线程刚好 ...

对,你说的对。多谢提醒。考虑资源的释放
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-3 02:17 , Processed in 0.262431 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表