#include<iostream>//懒汉式单例
#include<pthread.h>
#include<unistd.h>
using namespace std;
pthread_mutex_t mutex;//线程的同步机制问题
class singletion//单例类
{
public:
static singletion * getinstance()//提供给外部的创建对象的接口
{
static singletion *instance = NULL;局部静态变量
if(instance == NULL)
{
objcount++;
instance = new singletion;//创建对象
}
return instance;
}
// static void releae()
// {
// delete instance;
// instance = NULL;
// }
private:
singletion(){}//构造函数私有化
// static singletion *instance;//静态成员变量作为对象指针
public:
static int objcount;
};
//singletion* singletion::instance = NULL;
int singletion::objcount = 0;
void * create(void *agg)
{
pthread_mutex_lock(&mutex);
singletion *s = singletion::getinstance();
cout<<s<<endl;
cout<<singletion:: objcount<<endl;
pthread_mutex_unlock(&mutex);
return NULL;
}
int main()
{
// singletion *s1 = singletion::getinstance();
// singletion *s2 = singletion::getinstance();
// singletion *s3 = singletion::getinstance();
// cout<<s1<<endl;
// cout<<s2<<endl;
// cout<<s3<<endl;
pthread_t pid[20];
for(int i = 0; i < 20; i++)
{
pthread_create(&pid[i],NULL,create,NULL);
}
for(int i = 0; i < 20; i++)
{
pthread_join(pid[i],NULL);
}
return 0;
}
C++ 懒汉式单例
最新推荐文章于 2024-04-18 20:00:51 发布