【发布时间】:2014-01-19 03:48:57
【问题描述】:
有人告诉我只写单例作为本地类,是真的吗?
我想知道为什么使用本地类可以确保线程安全。
【问题讨论】:
有人告诉我只写单例作为本地类,是真的吗?
我想知道为什么使用本地类可以确保线程安全。
【问题讨论】:
#include <boost/utility.hpp>
class singleton : private boost::noncopyable {
public:
static singleton& instance() {
static singleton inst;
return inst;
}
private:
singleton() = default;
~singleton() = default;
};
局部静态变量的构造保证是线程安全的。
另外,不惜一切代价避免单例。它们和全局变量一样可怕。
【讨论】:
看看这个帖子:what is correspoding feature for synchronized in java?
feature-for-synchronized-in-java
基本上它声明 C++ 没有用于锁定机制的语言级功能,
您需要使您的单格顿类线程安全,尽管这篇文章
http://en.wikipedia.org/wiki/Double-checked_locking 关于双重检查锁定模式
声明,单例不需要锁定(包含 c 的示例)。
【讨论】: