C++11并发与多线程笔记(7) 单例设计模式共享数据分析、解决,call_once

第七节 单例设计模式共享数据分析、解决,call_once

C++11并发与多线程笔记(7) 单例设计模式共享数据分析、解决,call_once_第1张图片

1.设计模式

  • 程序灵活,维护起来可能方便,用设计模式理念写出来的代码很晦涩,但是别人接管、阅读代码都会很痛苦
  • 老外应付特别大的项目时,把项目的开发经验、模块划分经验,总结整理成设计模式
  • 中国零几年设计模式刚开始火时,总喜欢拿一个设计模式往上套,导致一个小小的项目总要加几个设计模式,本末倒置
  • 设计模式有其独特的优点,要活学活用,不要深陷其中,生搬硬套

2.单例设计模式:
整个项目中,有某个或者某些特殊的类,只能创建一个属于该类的对象。
单例类:只能生成一个对象。

3.单例设计模式共享数据分析、解决
面临问题:需要在自己创建的线程中来创建单例类的对象,这种线程可能不止一个。我们可能面临GetInstance()这种成员函数需要互斥。
可以在加锁前判断m_instance是否为空,否则每次调用Singleton::getInstance()都要加锁,十分影响效率。

#include 	
#include 
using namespace	std;

mutex myMutex;
//懒汉模式
class Singleton
{
   
public:
	static Singleton * getInstance() {
   
         //双重锁定 提高效率
		if (instance == NULL) {
   
			lock_guard<mutex> myLockGua(myMutex);
			if (instance == NULL) {
   
				instance = new 

你可能感兴趣的:(C++11并发与多线程,c++)