例如,如果我在标题中内联了以下单例构造:
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++ 标准没有说明动态链接,我正在寻找特定于平台的知识。链接将只是动态的。