单件 singleton 唯一的对象实例

// 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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值