例如,如果我在标题中插入以下单例构造:
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
代码包含一个单例实例,file2.dll
代码包含另一个实例file3.exe
包含另一个实例如果file3.exe
从GetProcAddress
调用函数(通过file1.dll
),我可以指望在该函数体中访问file1.dll
的单例实例吗?
我知道C ++标准没有提及动态链接,我正在寻找特定于平台的知识。链接将是动态的。