在c ++中,为确保单例线程安全,该怎么做?

时间:2014-01-19 03:48:58

标签: c++ singleton

有人告诉我只是把单身人士写成本地班,这是真的吗?

我想知道为什么使用本地类可以确保线程安全。

2 个答案:

答案 0 :(得分:1)

#include <boost/utility.hpp>

class singleton : private boost::noncopyable {
public:
    static singleton& instance() {
        static singleton inst;
        return inst;
    }

private:
    singleton() = default;
    ~singleton() = default;
};

本地静态变量的构造保证是线程安全的。

另外,不惜一切代价避免单身人士。它们和全局变量一样可怕。

答案 1 :(得分:0)

看一下这篇文章:what is correspoding feature for synchronized in java?
在for java中为feature-for-synchronized- 基本上它表明C ++没有锁定机制的语言级功能,你需要使你的singelton类线程安全,尽管这个关于双重检查锁定模式的http://en.wikipedia.org/wiki/Double-checked_locking < br />陈述,单身人士不需要锁定(c包含一个例子)。