如何在静态库中实现单例

时间:2015-09-08 06:24:23

标签: c++ linux architecture

我有一个关于静态库(.a / .lib)中的单例如何表现的问题。

class MySingleton {
public:
     static
     MySingleton& 
     GetInstance() {
         static MySingleton singleton;
         return singleton;
     }
private:
     explicit
     MySingleton() {}

     virtual
     ~MySingleton() {}
};

如果使用静态库,如何确保在操作系统级别上只有一个MySingleton?

如您所知,静态库在内存中有多个副本。这些副本是否相互干扰或完全无关?这意味着如果您有app1和app2,app1是否有一个MySingleton,app2也有一个MySingleton?

如果一旦app1启动并消耗MySingleton,app2就没有机会创建另一个MySingleton,即使它拥有另一个静态库副本。

1 个答案:

答案 0 :(得分:1)

在操作系统级别,除共享库外,进程不共享任何内存。 进程A将拥有自己的单例实例,进程B将具有完全不同的单例实例,并且这两个进程彼此隔离。

如果您想要任何涉及多个进程的逻辑,那么请按照共享库/共享内存的方式进行思考。