问题来源于某面试题:
编写一个单例模式的类。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
class singleStance{
private :
singleStance();
public :
static singleStance* onlystance;
static singleStance* getStance(){
if(!onlystance){
onlystance = new singleStance();
}
return onlystance;
}
};
int main(){
return 0;
}
事实上这样已经完成了单例模式的目标。
但是事实上也只会在单线程模式下起作用。
试想,如果多线程下同时进入if(!onlystance)就有可能出现错误。
所以显然是需要加入互斥锁的。
class singleStance{
private :
singleStance();
public :
static singleStance* onlystance;
static singleStance* getStance(){
l