我知道迈耶斯单身人士:
order.suborders.uniq.inspect
它的优点是它使用延迟评估,但不保证在C ++ 03中是线程安全的。
如果静态实例是成员变量怎么办?这是否保证是线程安全的?我不明白为什么不。而且我愿意放弃懒惰的实例。
class Singleton{
private:
Singleton();
public:
Singleton & GetInstance(){
static Singleton instance;
return instance;
}
}
答案 0 :(得分:2)
如果将单例实例更改为静态类成员,则该实例的创建将是线程安全的。无论你用它做什么,在许多情况下仍然需要保护原因。
答案 1 :(得分:1)
这完全击败了单身人士。是的,它变得线程安全。但是现在它与Singleton
类型的全局变量相同,那么为什么要对Instance()
和朋友进行额外输入?
答案 2 :(得分:1)
虽然你获得了线程安全性,但你并没有打败"静态初始化命令惨败"更多,这在我看来是这种类型的Singleton类最重要的方面。