我已经阅读了许多考虑线程安全双重检查锁定的问题(对于单例或惰性初始化)。在某些线程中,答案是模式完全被破坏,其他人提出了解决方案。
所以我的问题是:有没有办法在 C++ 中编写一个完全线程安全的双重检查锁定模式?如果是这样,它看起来如何。
如果这使事情变得更容易,我们可以假设 C++11。据我所知,C++11 改进了可以产生所需改进的内存模型。
我确实知道在 Java 中可以通过使仔细检查保护变量 volatile 来实现。由于 C++11 从 Java 中借用了大部分内存模型,所以我认为这是可能的,但是如何呢?