最常见的程序员面试题(4)写一个能工作的Singleton

        单件设计模式是非常常用的一种设计模式。当我有一个复杂的系统需要提供一个统一的配置界面的时候,这个配置对象和后台对象之间的交互常常是一对多的关系。那么配置对象常常就需要被设计成Singleton的实例。

        最简单的singleton就是用一个全局对象或者函数内部的静态对象来实现。但是这样有两个明显的问题。(1) 全局对象是程序初始化的时候就构造的,如果程序启动要构造很多此类对象,会变得很昂贵。(2) C++标准并没有规定不同的编译单元的全局对象的构造顺序,所以如果不同Singleton之间的构造有相互依赖关系,那么行为是未知的。

 

 

        这个实现还有多线程的问题,如果两个线程同时访问pInst==nullptr这句话,那么同时得出pInst为空的结论,new执行了两次,显然不对。所以需要引入double checked lock机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值