通过Delphi 7中的线程加载多个DLL

时间:2019-01-24 12:02:42

标签: multithreading dll delphi-7 loadlibrary

我的应用程序具有分隔的模块(模态形式)为dll。通过应用程序主菜单,我访问那些dll,在窗体关闭时调用LoadLibrary和FreeLibrary。一切正常。

已使用新的方法创建了一个新模块,而itslef使用其他插件(dll)正常工作。在加载此模块时,这些插件也将加载。但这需要时间。

因此,为了避免在打开此模块期间出现这种加载时间,我尝试通过线程预先在应用程序初始化中加载这些插件,但是我注意到即使在线程中,Windows LoadLibrary也不会同时执行,我的意思是应用程序启动后,如果我尝试打开任何模块(除了那个女巫使用那些插件),它都会等到线程完成后再加载该模块。

那么,有没有办法使负载库“同时”工作?

1 个答案:

答案 0 :(得分:1)

在加载模块时,系统加载器会使用所谓的加载器锁来序列化任务。因此,无法并行执行对LoadLibrary的多次调用。

真正的问题可能是这些DLL在加载时正在执行耗时的工作。加快速度的唯一方法是将DLL更改为推迟工作。