我有一个类似于以下的属性:
private:
Foo* myFoo_m;
public:
Foo getMyFoo() const
{
if (myFoo_m == NULL)
{
myFoo_m = new Foo();
// perform initialization
这在单线程环境中运行良好,但在多线程环境中如何处理呢?我发现的大多数信息都与静态单例有关,但在这种情况下, myFoo 是一个公共实例属性。
我将它从 C#(我可以使用 Lazy)和 Java(我可以使用双重检查锁定)移植过来,但在 C++ 中似乎没有直接的方法可以做到这一点。我不能依赖任何外部库(没有 BOOST),这需要在 windows 和 linux 上工作。我也不能使用 C++11。
任何见解都会很好。我是 C++ 新手。