这个问题因重复而被关闭,因此使问题更加明确并重新提出问题:
问题是:
1)线程下面的实现是否安全?
2)以下方法存在哪些问题(复杂性除外)
class Singleton
{
public:
static void init (){
static Singleton _single ;
cout<<"Called"<<endl;
m_Singleton = &_single ;
}
static Singleton & instance ()
{
static pthread_once_t once_flag = PTHREAD_ONCE_INIT;
cout<<(unsigned int)PTHREAD_ONCE_INIT<<endl;
pthread_once(&once_flag, &Singleton::init) ;
return *m_Singleton;
}
static Singleton* m_Singleton;
private:
Singleton (){}
Singleton (const Singleton&) ;
Singleton operator=(Singleton&) ;
};
我指望这个实现出了问题,因此没有任何建议
由于
答案 0 :(得分:1)
出了什么问题?
太复杂了。只需使用它(假设你真的想要一个单身人士):
static Singleton & instance ()
static Singleton _single;
cout<<"Called"<<endl;
return _single ;
}