java和C++之单例类双重检查加锁
1、Java
public class Singleton {
private volatile static Singleton instance;
public static Singleton getInstance () {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
2、C++
class Singleton {
private:
volatile Singleton* pInst = 0;
public:
static Singleton* GetInstance() {
if (pInst == 0) {
lock();
if (pInst == 0) {
pInst = new Singleton();
}
unlock();
}
return pInst;
}
}
3、总结
同步机制等价于锁机制
赞 (0)