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