Singleton & DCLP & volatile
时间:2010-08-25 来源:tyc611
谈到Singleton必然会想到DCLP(Double-Checked Locking Pattern),但DCLP最终被证明在运用于Singleton之上时是不安全的,即使使用了volatile修饰符。
针对C/C++的分析可以参考这篇文章: C++ and the Perils of Double-Checked Locking
针对Java的分析可以参考这篇文章:双重检查锁定及单例模式 (可在文中找到英文原文链接)
文章“C++ and the Perils of Double-Checked Locking"中有一段关于volatile的历史比较有趣。
------
注:虽然DCLP不是在所有环境中绝对可靠,但大多数时候还是比较安全的。
针对C/C++的分析可以参考这篇文章: C++ and the Perils of Double-Checked Locking
针对Java的分析可以参考这篇文章:双重检查锁定及单例模式 (可在文中找到英文原文链接)
文章“C++ and the Perils of Double-Checked Locking"中有一段关于volatile的历史比较有趣。
------
注:虽然DCLP不是在所有环境中绝对可靠,但大多数时候还是比较安全的。
相关阅读 更多 +