加入收藏 设为首页 帮助中心
 
论坛首页
用户登录 | 用户注册 | 最新悬赏 | 最新贴子 | 会员中心 | 贴子搜索 | 网站地图 | 帮助中心 | 联系我们
站内搜索:
现在位置 > 维库电子开发网论坛 > 嵌入式系统/ARM技术 > WINCE中创建线程竟失败?好奇怪,帮帮...
帖子主题: WINCE中创建线程竟失败?好奇怪,帮帮我!
你还没有登录,无法发表回复,请首先 登录.. [注 册]
积分:884 你的选择
发表于:2008-5-5 9:17:00 楼主
级别:一钻
积分:884分
注册:2007年11月10日
我在WINCE中会  < < <频繁>>> 使用AfxBeginThread创建工作线程,这个线程没有任何循环,运行完成后会 < <安全>>退出,并且在线程中的资源均已释放。

但在某一时刻,使用AfxBeginThread创建线程会返回NULL。就像这样: CWinThread* m_lpThread = AfxBeginThread(MyThread, NULL, 0);

结果是:m_lpThread == NULL;

得出的错误号是8,查了一下为:存储空间不足,无法处理此命令。 

这里所说的存储空间是指啥呢?

怎么办啊?大家有没有遇到过呢?我真的很急,知道这儿有很多高手,求大家帮帮我!谢谢!
 
积分:1650 指尖划过
发表于:2008-5-5 17:53:00 1 楼
级别:二钻
积分:1650分
注册:2007年11月02日
可能你在某一时间同时存在的线程太多了。
导致进程中的空间被消耗完了。

你的“安全”退出可能不安全,你能保证线程中不会有内存泄露或线程crash,或 block。
每个线程建立后最好在某个地方有检查该线程是否真的退出的机制。
 
积分:1650 爱你的理由
发表于:2008-5-6 9:33:00 2 楼
级别:二钻
积分:1650分
注册:2007年11月10日
线程退出有时候会很慢的,如果你没有安全的退出,就会导致系统很慢.检查一下是否存在线程没有退出来.  
积分:1542 蓝色生死恋
发表于:2008-5-9 9:30:00 3 楼
级别:二钻
积分:1542分
注册:2007年11月12日
可能你在某一时间同时存在的线程太多了,即使线程没有退出来,也不会返回NULL啊?
另外,我的工程中有比较耗资源的视频模块,加上它以后就会出这个问题,不加没事儿。但我说的'耗资源的视频模块'我也不知道具体耗的是什么资源。
 
积分:1200 樱之花
发表于:2008-5-10 8:59:00 4 楼
级别:二钻
积分:1200分
注册:2007年11月14日
“完成工作后就会立即退出的”
就算是这样的线程在重复建立时也需要检查一下上一个线程有没有退出,如果没有退出则强行终止。
这个是一种安全机制。

还有确保线程资源释放。可以使用_finaly 等机制来保证。

还有线程是否会用到共享资源?如果有,加入同步机制。

多线程的安全是靠多种安全机制来保证的,不是自己觉得线程内部处理很简单就会安全的。

如果你加入安全检查和同步后,还是有问题,

那么只能把线程的代码贴出来了。
 
积分:884 你的选择
发表于:2008-5-12 8:50:00 5 楼
级别:一钻
积分:884分
注册:2007年11月10日

最后检查出是堆和dll动态库占用空间重叠了,导致的出现了错误号为8的错误:存储空间不足,无法处理此命令.谢谢各位!

 
快速回复:
用户名: 密码:  验证码,看不清楚?请点击刷新验证码 注册新帐号?
上传图片格式(jpg/gif/png)和文件格式(rar/pdf)
 
 
网站简介广告服务网站地图帮助信息联系方式问题报告
Copyright 2007 - 2008 bbs.weeqoo.com
Powered By weeqoo Version 8.0.0