Загрузите несколько библиотек DLL через поток в Delphi 7 - PullRequest
0 голосов
/ 24 января 2019

Мое приложение имеет отдельные модули (модальные формы) в виде DLL.Через главное меню приложения я получаю доступ к этим библиотекам, вызывая LoadLibrary и FreeLibrary, когда форма закрывается.Все отлично работает

Новый созданный модуль использовал новый подход, он сам использует другие плагины (dll) для работы.Когда я загружаю этот модуль, эти плагины также загружаются.Но это требует времени.

Поэтому, чтобы предотвратить это время загрузки во время открытия этого модуля, я пытался предварительно загрузить эти плагины в моей инициализации приложения через поток, но я заметил, что даже в потоке окна LoadLibrary не выполняются одновременно, я имею в видупосле запуска моего приложения, если я пытаюсь открыть какой-либо модуль (кроме того, который использует эти плагины), он ожидает окончания потока, чтобы затем загрузить модуль.

Итак, есть ли способ сделать loadlibraryработать "одновременно"?

1 Ответ

0 голосов
/ 24 января 2019

При загрузке модуля системный загрузчик сериализует задачу, используя так называемую блокировку загрузчика.Следовательно, несколько вызовов LoadLibrary не могут выполняться параллельно.

Реальная проблема, вероятно, заключается в том, что эти библиотеки DLL выполняют трудоемкую работу во время загрузки.Единственный способ ускорить процесс - изменить библиотеки DLL, чтобы отложить эту работу.

...