0

例如,如果我在标题中内联了以下单例构造:

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调用函数(通过GetProcAddressfile1.dll,我可以指望访问file1.dll该函数体中的单例实例吗?

我知道 C++ 标准没有说明动态链接,我正在寻找特定于平台的知识。链接将只是动态的。

4

0 回答 0