【问题标题】:Load multiple DLLs through thread in Delphi 7在 Delphi 7 中通过线程加载多个 DLL
【发布时间】:2019-01-24 12:02:42
【问题描述】:

我的应用程序有单独的模块(模式形式)作为 dll。通过应用程序主菜单,我访问这些 dll,在表单关闭时调用 LoadLibrary 和 FreeLibrary。一切正常。

已创建的新模块使用了新方法,它使用其他插件(dll)来工作。当我加载这个模块时,这些插件也会被加载。但这需要时间。

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

那么,有没有办法让 loadlibrary “同时”工作?

【问题讨论】:

    标签: multithreading dll delphi-7 loadlibrary


    【解决方案1】:

    当您加载模块时,系统加载程序使用所谓的加载程序锁序列化任务。因此对LoadLibrary 的多次调用不能并行执行。

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

    【讨论】:

    • 其实我已经看过了,即使在 dll 初始化时没有执行任何操作,加载 14 个 dll 大约需要 10 秒。但是你的回答已经让我明白了,在这条路上我无能为力,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多