函数内部的静态变量和动态链接

时间:2018-12-07 15:15:03

标签: c++ dll shared-libraries platform-specific

例如,如果我在标题中插入以下单例构造:

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

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

0 个答案:

没有答案