| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1789 人关注过本帖
标题:[分享][原创]关于在MFC规则DLL的App初始化时创建线程的失败原因
取消只看楼主 加入收藏
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
 问题点数:0 回复次数:1 
[分享][原创]关于在MFC规则DLL的App初始化时创建线程的失败原因

那天在MSDN上发问题的时候看到一篇贴子,里面提问为什么在MFC规则DLL的App初始化时创建线程的失败。

他是这样做的:

...CMyApp::InitInstance()

{

::AfxBeginThread(.....); }

我感到很有意思,就自己测试了一下,经过调试发现是程序走到一个事件对象时候死锁了

::WaitForSingleObject(事件对象,INFINITE); \\永远等待事件对象

当时也是百思不得其解......

后来我翻了翻《Windows核心编程》,找到了问题所在:

因为DLL当每次有新线程创建的时候,系统都会查看当前映射到此进程的地址空间中的所有DLL,并且调用每个DLL带有DLL_THREAD_ATTACJH值的DllMain函数,又因为当前就是在这个DLL的DllMain函数里,所以就死锁了。

搜索更多相关主题的帖子: MFC App 线程 DLL 规则 
2004-12-03 17:55
C++大粉丝
Rank: 4
等 级:贵宾
威 望:10
帖 子:477
专家分:0
注 册:2004-4-23
收藏
得分:0 

呵呵,为什么这么说呢?


I am a big fan of c plus plus.
2004-12-12 14:00
快速回复:[分享][原创]关于在MFC规则DLL的App初始化时创建线程的失败原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029251 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved