Singleton - C ++中的多线程问题

时间:2016-03-06 13:50:02

标签: c++ multithreading static singleton mutex

我已经看过有关此问题的帖子,但我仍在努力解决这个问题。这样做是否可以实现安全的singelton?我正在使用互斥锁,静态成员并返回其引用。

#include <mutex>
using namespace std;
mutex mtx;

class MySingleton {
private:
    MySingleton();
public:
    MySingleton& getInstance() {
        mtx.lock();
        static MySingleton instance;
        mtx.unlock();
        return instance;
    }
};

1 个答案:

答案 0 :(得分:2)

  

这样可以实现安全的singelton吗?

它超调了。只需摆脱互斥锁并写下:

static MySingleton& getInstance() {
    static MySingleton instance;
    return instance;
}

第一次调用该函数时,保证instance的线程安全创建。