搜索
bottom↓
回复: 10

rt-thread-RC1删除线程再创建线程出现内存爆仓现象,原因

[复制链接]

出0入0汤圆

发表于 2011-12-13 16:00:39 | 显示全部楼层 |阅读模式
rt-thread-RC1删除线程再创建线程出现内存爆仓现象
创建1个线程A,在A线程中创建B线程,
然后再重复删除B线程,创建B线程,出现内存不能释放,最终爆仓

代码如下:
while(1){
rt_thread_delay(100);
//删除线程B
if(thread_B != RT_NULL){
rt_thread_delete(thread_B);       
thread_B        = RT_NULL;       

rt_thread_delay(100);
thread_B = rt_thread_create("B",B, RT_NULL,2048, 18, 20);
if (thread_B != RT_NULL) rt_thread_startup(thread_B);
}
}
分析是删除线程后,内存来不及回收,再创建线程后内存增加,直到爆仓。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-12-13 16:02:18 | 显示全部楼层
是系统有BUG还是线程删除的方法不对呢?

出0入0汤圆

发表于 2011-12-13 16:44:17 | 显示全部楼层
等待结果。

出0入0汤圆

发表于 2011-12-13 17:37:29 | 显示全部楼层
你的线程B代码是什么?while (1);?这样的话,显然会爆

出0入0汤圆

 楼主| 发表于 2011-12-13 18:01:18 | 显示全部楼层
回复【3楼】ffxz  
---------------------------------------------------------------
是TCP服务器的代码。那要在线程A里循环创建和删除线程B该怎么办?

出0入0汤圆

 楼主| 发表于 2011-12-13 18:03:49 | 显示全部楼层
用deIete刪除线程后,还需要什么条件才能回收內存呢?

出0入0汤圆

发表于 2011-12-13 21:07:23 | 显示全部楼层
RTT删除线程仅仅是将线程状态更改为close,之后释放资源需要到下次执行到空闲状态为止。因此建议要想删除线程可以考虑利用信号量。A线程释放信号量,B线程接收信号量,当接收到,就跳出到程序的末尾,这样线程会自动结束。

出0入0汤圆

 楼主| 发表于 2011-12-13 21:55:32 | 显示全部楼层
回复【6楼】tiancaigao7  天才杨威利
-----------------------------------------------------------------------
如果是这样,一旦B线程卡住就关不掉了。Linux或winXP都是可以强制关闭的。

出0入0汤圆

发表于 2011-12-14 20:17:51 | 显示全部楼层
RTT好像也有一个清理,仅仅是在例程里面见到过,但是手册上并没有讲。因此并不知道是不是实现这个功能的,例程上叫TC。你可以看看。

出0入0汤圆

发表于 2011-12-18 00:15:39 | 显示全部楼层
想到爆仓,想起我当年的豆油
唉,往事不堪回首

出0入0汤圆

 楼主| 发表于 2011-12-19 11:21:14 | 显示全部楼层
回复【9楼】aureoleday
-----------------------------------------------------------------------

哈哈,原来你也玩期货啊。08年多铜爆仓的也不少。09年空铜爆仓的更多。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-29 17:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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