我试图更详细地了解如何在Windows中加载和卸载DLL时使用OS加载程序。
据我所知,在创建/销毁新线程和加载/卸载新DLL时,每个加载的DLL都会收到通知。
这是否意味着DllMain函数在一个锁内运行,没有其他线程可以在它运行时访问它,如果你要在该函数中创建另一个线程,你可以挂起进程甚至操作系统?
我的理解是否正确?
是否有某篇文章可以解释这一点?
答案 0 :(得分:1)
当两个线程尝试以不同的顺序获取两个锁时,可能会发生deadlock。
正在运行DllMain的线程已经获得了隐式的O / S锁:因此他们(Microsoft)认为该线程尝试获取任何其他第二锁(例如,因为不同的线程可能已经拥有)可能是不安全的锁定并且当前在隐式O / S锁定时被阻止。)
答案 1 :(得分:0)
答案 2 :(得分:0)