Java Double-Checked Locking 已死,C++ 呢?
已经有众多文章讨论 double-checked locking 模式在 Java 下面无法正常工作,这里先简要的总结一下。
根本原因在于 Java 的 memory model 允许所谓的 out-of-order write ,对于下面的 Java 代码,out-of-order write 可能导致灾难性的结果
class SingletonTest{private static SingletonTest instance;private SingletonTest{}private static class Instance//嵌套类只加载一次。{static fianl SingletonTest Instance=new SingletonTest();}public static SingletonTest(){return Instance.instance;}}?
?