// 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 唯一的对象实例,布布扣,bubuko.com
原文:http://blog.csdn.net/wayneforever/article/details/21634891