一张图系列——为什么在DllMain里面创建了线程并Wait会卡死

这是一个老话题了,推荐一篇文章:

http://blog.csdn.net/breaksoftware/article/details/8150476#0-tsina-1-83826-397232819ff9a47a7b7e80a40613cfe1

这里简单画图阐述核心问题所在:

关键在于ntdll!LdrpLoaderLock这把锁。

1、在使用DLL_PROCESS_ATTATCH进入DllMain之前当前线程会获取这把锁。

2、如果在DllMain里面创建了线程,新线程初始化过程中也会去获取这把锁。

3、如果仅仅CreateThead就返回后,当前线程就很快释放该锁,随后新创建的线程也能顺利的获取到该锁。

4、但如果CreateThread之后使用了Wait等待该线程结束,那当前线程没有释放LdrpLoaderLock,新线程又获取不到,进入等待。就会导致卡死。

所以,最好别在DllMain中创建线程,即使创建了也千万别等待。

最后,一张图看清个中关系(图片右键新标签页打开可看完整高清大图):

时间: 2024-10-16 08:27:18

一张图系列——为什么在DllMain里面创建了线程并Wait会卡死的相关文章

【一张图系列】理解用户与用户组

【一张图系列】理解安全上下文

深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域

× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关于作用域的两种不同翻译而已.但实际上,它们并不相同,却相互纠缠在一起.本文先用一张图开宗明义,然后进行术语的简单解释,最后根据图示内容进行详细说明 图示 查看大图 概念 [作用域] 作用域是一套规则,用于确定在何处以及如何查找标识符.关于LHS查询和RHS查询详见作用域系列第一篇内部原理. 作用域分

我爱java系列---【项目研发流程——一张图搞定】

古语有言:“道不明,何以言术?”,所以,干什么都要清清楚楚的干,有思路,有计划的进行,下面这张图,是一个大致的介绍,帮助我们更清晰的认清自己在项目中的职责. 原文地址:https://www.cnblogs.com/hujunwei/p/12623751.html

《Nodejs开发加密货币》之十:三张图让你全面掌握加密解密技术

关于 <Nodejs开发加密货币>,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.加密解密等各个环节.代码完全开源.文章免费分享. 相关资源见 http://ebookchain.org QQ交流群: 185046161 前言 加密解密技术,涉及面很广,这里,把前人的研究成果汇总起来,通过图表的形式来帮助记忆和筛选,方便日后使用.内容主要包括两个方面,一个是场景与算法,一个是Nodejs的相关模块或组件.共三张脑图,具

一张图概括互联网公司的标准技术架构

大部分人对于BAT的技术有一种莫名的崇拜感,觉得只有非常牛逼和天才才能做出现在的这些系统,但经过前面两篇博文的分析,我们可以看到其实并没有什么神秘的力量和魔力融合在技术里面,而是业务的不断发展推动技术的不断发展,一步一个脚印,持续几年甚至十几年的发展,才能达到当前技术复杂度.先进性.牛逼度. BAT解密(一):聊聊技术发展的驱动力 BAT解密(二):聊聊业务如何驱动技术发展 抛开BAT各自差异很大的业务,站在技术的角度来看,其实BAT的技术架构基本是一样的,再将视角放大,你会发现整个互联网行业的

迁移上云|开局一张图,技能靠爬坑

迁移上云|开局一张图,技能靠爬坑 个人经历过两家公司从0到1上云,迁移和直接上云,记录一些爬”坑“趣事 上云流程+云端网络.应用结构 迁移上云流程+结构图 流程 结构 为啥上云 当然每个公司面对的问题不同,我只能从自身经历的两家公司和自身的一些认知来说,欢迎同学补充. 假设你们是自建机房(IDC就不讨论了),你想想中你们的机房是这样的 但是也有可能是这样式的 有点夸张哈,但是实际自己机房什么样,谁进谁知道 进入正题 机房图片只是调皮一下,真实上云的话考虑无非几点,上云是否可以解决你的关键性问题,

一张图搞清楚PMBOK所有过程的使用

很多参加PMP培训的学员大概都会有一个感受,上课时似乎每个知识点都听懂了,大的知识框架也弄明白了,但是所有这些串起来在实践中怎么用呀!说的再直接一点,在考试的时候这些过程和活动是以怎样的逻辑来应用的.不用捉急,看完下面这张图,您就清楚了. (1)注意启动那一栏中的"理解商业论证",要理解成为"理解项目的商业论证"(商业论证是项目立项的原因),因为商业论证将指导项目的所有活动,以确保在项目结束的时候来所有的投资都是值得的.对于商业论证的重要性,很多考生在考试中都不太注

一张图说明环境变量

为了搞懂环境变量,做了一个小实验,体会到环境变量到底是什么样子的. [[email protected] ~]# cat 1.sh #!/bin/bash echo $n [[email protected] ~]# cat 22.sh #!/bin/bash export n=98 /root/1.sh 我在22.sh文件中定义了环境变量n,并且执行1.sh文件.在1.sh文件中执行echo $n  .然后我给两个文件都加上x权限,执行22.sh,我们将会得到什么呢? [[email prot