- 论坛徽章:
- 0
|
刚好在看singleton这个pattern
我一般是这样做的,不知道在多线程下边有没有问题:
#include <iostream>
using std::cout;
using std::endl;
class Singleton
{
public:
bool loadConfig()
{
cout << "Load Config" << endl;
return true;
}
static Singleton &instance()
{
static Singleton inst;
Singleton *pInst = &inst;
return *pInst;
}
protected:
Singleton()
{
cout << "In Singleton" << endl;
}
~Singleton()
{
cout << "In ~Singleton" << endl;
}
private:
//not available
Singleton(const Singleton &inst);
Singleton &operator=(const Singleton &inst);
};
int main()
{
Singleton::instance().loadConfig();
}
书上提到了在多线程的情况下,可以使用Double-Checked Locking的方法来实现线程安全,同时可以保证效率,好像也是容易的.
我就是不太明白,好像我在函数里边用个静态变量的方法应该也是可以保证的吧.C++自己去初始化这个变量应该自己可以保证是线程安全的吧?
就是这个问题不是很确定,哪个兄弟指点一下. |
|