有人告诉我只是把单例写成本地类,这是真的吗?
我想知道为什么使用本地类可以确保线程安全。
#include <boost/utility.hpp>
class singleton : private boost::noncopyable {
public:
static singleton& instance() {
static singleton inst;
return inst;
}
private:
singleton() = default;
~singleton() = default;
};
局部静态变量的构造保证是线程安全的。
此外,不惜一切代价避免单例。他们和全局一样可怕。
看看这篇文章:Java 中同步的对应功能是什么?
Java
中同步的功能基本上它指出C++没有用于锁定机制的语言级功能,
您需要使您的 singelton 类线程安全,尽管本文
http://en.wikipedia.org/wiki/Double-checked_locking 关于双重检查锁定模式
的声明,单例不需要锁定(包括 c 的示例)。