【问题标题】:in c++, to ensure singleton thread safe, how to do that?在 C++ 中,要确保单例线程安全,该怎么做?
【发布时间】:2014-01-19 03:48:57
【问题描述】:

有人告诉我只写单例作为本地类,是真的吗?

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

【问题讨论】:

    标签: c++ singleton


    【解决方案1】:
    #include <boost/utility.hpp>
    
    class singleton : private boost::noncopyable {
    public:
        static singleton& instance() {
            static singleton inst;
            return inst;
        }
    
    private:
        singleton() = default;
        ~singleton() = default;
    };
    

    局部静态变量的构造保证是线程安全的。

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

    【讨论】:

    • 几乎等同于上面提到的为 C 编写的文章中的示例。为您投票。
    【解决方案2】:

    看看这个帖子:what is correspoding feature for synchronized in java?
    feature-for-synchronized-in-java
    基本上它声明 C++ 没有用于锁定机制的语言级功能,
    您需要使您的单格顿类线程安全,尽管这篇文章
    http://en.wikipedia.org/wiki/Double-checked_locking 关于双重检查锁定模式
    声明,单例不需要锁定(包含 c 的示例)。

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多