避免在多线程环境中删除单例

时间:2013-09-19 10:08:54

标签: c++ multithreading design-patterns

我在C ++中有一个通用的单例类,它在单线程中运行但是从现在开始我要进入多线程环境我想确保单例在那里工作而且崩溃的一件事就是多线程试图在那个上调用delete单指针。有没有办法不使用锁来避免这个错误。

class singleton
{
public : 
    static singleton* getinstance();
private :
    singleton();
    singleton(const singleton& that);
    singleton& operator=(const singleton& that);
    static singleton* ptr;
};

2 个答案:

答案 0 :(得分:1)

这种方式更好。没什么可抱怨的。干杯!

答案 1 :(得分:1)

它被删除的地方?通常不会删除单身人士; 如果你想要它被破坏(你通常不会),你使用 迈耶斯成语;否则,你分配一次,永远不会删除 它。

线程问题更加微妙。最简单的解决方案 通常是为了确保调用instance函数 在线程开始之前至少一次,通常是由于 初始化静态变量。一旦指针是 非null,它永远不会改变,因此没有问题 穿线。 (但这与删除任何内容无关。)