В настоящее время я пытаюсь интегрировать DLL (FooEmulation
) в существующий проект.
DLL предполагает, что она будет использоваться только для эмуляции одного Foo
одновременно, и в результате использует много статических глобальных переменных.
Однако я хочу иметь возможность управлять тысячами Foo
экземпляров одновременно.
У меня есть исходный код исходной библиотеки DLL, поэтому я могу преобразовать все статические глобальные переменные в параметры, которые будут переданы (напрямую или через дескриптор), но библиотека DLL поддерживается отдельно, и я хотел бы по возможности избегайте разветвления / слияния.
Одна из техник, которую я нашел, состояла в том, чтобы загрузить несколько динамически генерируемых копий DLL, но это слишком ресурсоемко для нужного мне масштаба.
Я также не могу позволить себе создать процесс или поток для каждого Foo
.
Можно ли сохранить несколько копий статической памяти DLL и восстановить ее при каждом использовании DLL?
Как мне найти это? Могу ли я даже прикоснуться к нему?