<分区>
此问题已作为重复问题关闭,因此使问题更加明确并重新打开问题:
问题是:
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&) ;
};
我指望这个实现有问题,因此没有在任何地方建议
谢谢