【发布时间】:2013-09-03 06:53:51
【问题描述】:
我正在使用 Visual Studio 2008 和 C++,并在运行时加载 DLL。但是,这会阻碍用户体验。我希望通过将其推送到新线程 (CreateThread) 来避免这种情况,但它仍然会阻塞 UI 线程。
为什么?
达斯汀
【问题讨论】:
-
LoadLibrary()在阻止 UI 方面不能那么慢。你应该更多地解释你是如何做到的 -
加载 DLL 是一个进程范围的操作,调用线程无关紧要。如果性能打击来自臃肿的
DllMain(),恐怕你无能为力。 -
可能您应该在程序的开头加载 DLL,这样它就不会过多地影响用户体验。但是当然,您可能想检查加载它时花费了这么多时间的人。例如。分配太多内存导致系统交换?
-
@FrédéricHamidi:有些部分是全流程的,例如加载程序锁定,但这不会影响性能。
DllMain部分确实会影响性能,但不是进程范围的(仅在一个线程上运行,这就是调用线程确实很重要的原因)。
标签: c++ multithreading visual-c++ dll loadlibrary