Скажем, у меня есть DLL, которая имеет следующее статический/глобальный:LoadLibrary Статические/Глобал и Нити
ClassA Object;
Наряду с реализацией ClassA, он также содержит «нормальную» ClassB, который не будет работать должным образом если ClassA еще не сконструирован (именно поэтому я сделал ClassA статическим/глобальным).
В Windows я считаю, что загрузчик DLL загрузит эту DLL при вызове конструктора ClassB, правильно? На этом этапе ClassA будет построен, а затем будет построена ClassB. Если второй поток приходит и строит ClassB, ClassA не будет построен так, как он уже был построен.
Теперь, мой вопрос: что, если ClassB создается одновременно двумя потоками. Итак, Thread 1 начнет строить ClassA. Будет ли Thread 2 ждать, пока ClassA не будет полностью сконструирован до выполнения конструктора ClassB?
Иными словами, использует ли LoadLibrary() CriticalSection для обеспечения потоковой инициализации статических/глобальных переменных DLL? Моя догадка - «да», но я не могу найти какую-либо документацию, говорящую так или иначе.
Спасибо - это согласуется с тем, что я интерпретировал документальной документацией DllMain, но я с облегчением нашел кого-то другого в согласии с моей интерпретацией. –