// example13.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
#include "windows.h"
/*
我们的应用程序往往有许多配置项,而应用的配置项往往在每个类中都要用到,
所以把配置数量规整到一个类中来吧。然后用单例模式来实现。
*/
class config
{
private:
config()
{
};
config(const config& con)
{
};
config& operator= (const config& con)
{
};
public:
~config(){};
public:
static config* getInstance();
//*******************************************************************
};
//如果应用是单线程的就可以了,但是如果是多线程,不行需要加锁来保护对
//getInstance 函数的调用。是线程之间互斥访问getInstance。保障该函数作为一个
//原语操作。
config* config::getInstance()
{
static config instance; //局部静态变量太好了,不用考虑回收,并且在程序运行前就已经在堆区分配好内存了,
Sleep(100);
return &instance;
}
DWORD WINAPI WorkerThread(LPVOID)
{
for(int i=0; i<5; i++)
{
printf("threadid=%d pc=%08X\n", GetCurrentThreadId(), config::getInstance());
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
//测试一下吧,看是否只会产生一个实例
DWORD dwThreadId = 0;
for(int i=0; i<5; i++)
{
CreateThread(NULL, 0, WorkerThread, NULL, 0, &dwThreadId);
}
getchar();
return 0;
}
单件 singleton 唯一的对象实例
最新推荐文章于 2019-09-15 15:53:36 发布