转载请注明出处
单例模式是面试到设计模式几乎一定会问道的一个设计模式,另外的一个设计模式MVC也是很常见,后续博文会继续分析MVC模式
就是一个类只返回一个对象的实体。
对象只是在第一次初始化的时候执行构造函数,进行创建。
比如:一家公司只会有一个CEO实体,任何事情都得回报给这个CEO,如果两个CEO会出现公司的管理混乱。
本文列出较较为完善的写法:
这样写考虑到了
1、多线程的线程安全:用临界区保护
2、异常安全
3、用两次if(m_sigleton == NULL)判断,第一次判断保证只有第一次需要进入临界区,以后都不需要。第二次保证,即使再第一次初始化的时候多个线程同时依次进入临界区。保证程序的高效性
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
class HwcHelpClass
{
private:
CRITICAL_SECTION m_cs;
public:
HwcHelpClass()
{
InitializeCriticalSection(&m_cs);
}
void lock()
{
EnterCriticalSection(&am