Delphi7 中通过线程加载多个 DLL
Load multiple DLLs through thread in Delphi 7
我的应用程序已将模块(模态形式)分离为 dll。通过应用程序主菜单,我访问那些 dll,在窗体关闭时调用 LoadLibrary 和 FreeLibrary。一切正常。
已创建的新模块使用了新方法,他自己使用其他插件 (dll) 来工作。当我加载这个模块时,那些插件也会被加载。但这需要时间。
因此,为了防止在打开此模块期间出现此加载时间,我之前尝试通过线程在我的应用程序初始化中加载这些插件,但我注意到即使在线程中,windows LoadLibrary 也不会同时执行,我的意思是,在我的应用程序启动后,如果我尝试打开任何模块(除了 使用那些插件),它会等到线程完成然后加载模块。
那么,有没有办法让 loadlibrary 正常工作"simultaneously"?
当您加载模块时,系统加载程序使用所谓的加载程序锁序列化任务。因此,对 LoadLibrary
的多次调用无法并行执行。
真正的问题可能是这些 DLL 在加载时执行耗时的工作。加快速度的唯一方法是更改 DLL 以推迟该工作。
我的应用程序已将模块(模态形式)分离为 dll。通过应用程序主菜单,我访问那些 dll,在窗体关闭时调用 LoadLibrary 和 FreeLibrary。一切正常。
已创建的新模块使用了新方法,他自己使用其他插件 (dll) 来工作。当我加载这个模块时,那些插件也会被加载。但这需要时间。
因此,为了防止在打开此模块期间出现此加载时间,我之前尝试通过线程在我的应用程序初始化中加载这些插件,但我注意到即使在线程中,windows LoadLibrary 也不会同时执行,我的意思是,在我的应用程序启动后,如果我尝试打开任何模块(除了 使用那些插件),它会等到线程完成然后加载模块。
那么,有没有办法让 loadlibrary 正常工作"simultaneously"?
当您加载模块时,系统加载程序使用所谓的加载程序锁序列化任务。因此,对 LoadLibrary
的多次调用无法并行执行。
真正的问题可能是这些 DLL 在加载时执行耗时的工作。加快速度的唯一方法是更改 DLL 以推迟该工作。