Статические переменные внутри функции и динамическая связь

Если у меня есть, например, следующая синглтонная конструкция, встроенная в заголовки:

class singleton_t
{
public:
static std::shared_ptr<singleton_t> instance()
{
static std::shared_ptr<singleton_t>
instance{new singleton_t};
return instance;
}
private:
singleton_t()
{

}
}

Они включены в несколько общих библиотек (DLL / SO) и исполняемых файлов, связанных динамически (используя LoadLibrary / dlopen) можно ли рассчитывать на наличие одного экземпляра синглтона на модуль (по крайней мере, в Windows, Linux и OS X)?

Так, например:

  • file1.dll код содержит один экземпляр Singleton,
  • file2.dll код содержит другой экземпляр
  • file3.exe содержит другой экземпляр

Если file3.exe функция вызова (через GetProcAddress) от file1.dllМогу ли я рассчитывать на доступ file1.dllСинглтонный экземпляр в этом теле функции?

Я знаю, что стандарт C ++ ничего не говорит о динамическом связывании, я ищу знания для конкретной платформы. Связь будет только динамической.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]