转载请注明出处
单例模式是面试到设计模式几乎一定会问道的一个设计模式,另外的一个设计模式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(&m_cs);
}
void unlock()
{
LeaveCriticalSec

本文探讨了C++中实现单例模式的方法,强调了线程安全和异常安全的考虑。通过双重检查锁定机制确保了在多线程环境下只有一个实例被创建,并通过示例展示了其高效性和正确性。
最低0.47元/天 解锁文章
1708





