关于双重if的妙用问题。大家一起讨论讨论。。
今天在看书的时候看的这个问题。希望大家一起思考一下,代码如下:
volatile T* pInst = 0;
T* GetInstance()
{
if(pInst == NULL)
{
lock();
if(pInst == NULL)
pInst = new T;
unlock();
}
return pInst;
}
书上说,双重if在这里另有妙用,可以让lock的调用开销降低到最小。求解。。。考虑不出来啊。
可以先不用CPU乱序执行会打乱new那一句的执行,抛开逻辑,只看双重if。
volatile T* pInst = 0;
T* GetInstance()
{
if(pInst == NULL)
{
lock();
if(pInst == NULL)
pInst = new T;
unlock();
}
return pInst;
}
书上说,双重if在这里另有妙用,可以让lock的调用开销降低到最小。求解。。。考虑不出来啊。
可以先不用CPU乱序执行会打乱new那一句的执行,抛开逻辑,只看双重if。
...全文
相关推荐
Java中的双重检查(Double-Check)详解
主要为大家详细介绍了Java中的双重检查(Double-Check),感兴趣的小伙伴们可以参考一下
Java双重检查加锁单例模式的详解
今天小编就为大家分享一篇关于Java双重检查加锁单例模式的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
单例模式与双重检测
NULL 博文链接:https://bijian1013.iteye.com/blog/2285276
java双重检查锁定的实现代码
主要介绍了java双重检查锁定的实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
CAD双重炸开方法
设计院为了成果保护,采用双重引用保护,CAD只能看不能修改,该方法迎刃而解!


非技术区
