单例模式的双重if判断与线程安全
单例模式
单例模式是指设计一个只能构造一个对象的类。简单来说就是在一个进程运行过程中只可以存在一个该类的对象。
单例模式的对象获得设计方式
A* getA()
{
if(_a == NULL)
{
lock()
if(_a == NULL)
{
_a = new A();
}
}
return _a;
}
static A* _a;
对于以上代码,有人可能会有以下疑问:
- 为什么要加锁
- 为什么要两层if判断