标题:[分享][原创]关于在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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-8784-1-1.html




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

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