在 C++ 中,要确保单例线程安全,该怎么做?
Posted
技术标签:
【中文标题】在 C++ 中,要确保单例线程安全,该怎么做?【英文标题】:in c++, to ensure singleton thread safe, how to do that? 【发布时间】:2014-01-19 03:48:57 【问题描述】:有人告诉我只写单例作为本地类,是真的吗?
我想知道为什么使用本地类可以确保线程安全。
【问题讨论】:
【参考方案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 的示例)。
【讨论】:
以上是关于在 C++ 中,要确保单例线程安全,该怎么做?的主要内容,如果未能解决你的问题,请参考以下文章