一:一个可以回收的单例设计模式的类代码
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include
#include
#include
#include
#include
#include
二、单例设计模式共享数据分析、解决
面临的问题:需要在我们自己创建的线程(而不是主线程)中来创建MyCAS这个单例类对象,这种线程可能不止一个(最少2个)。我们可能会面临GetInstance() 这种成员函数要互斥。
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include
#include
#include
#include
#include
#include
三、std::call_onece() 是一个函数模板,C++11引入的函数,该函数的第二参数是一个函数名a()
功能:
1.能够保证函数a(),只被调用一次。它具备互斥量这种能力的,而且效率上,比互斥量消耗的资源更少;
2.call_once()需要和一个标记结合使用,这个标记std::once_flag;其实once_flag是一个结构;
3.call_once()就是通过这个标记来决定对应的函数a()是否执行,调用call_once()成功后,call_once()就把这个标记设置为一种已调用的状态,后续再次调用call_once的时候,只要once_flag为已调用转态,那么对应的函数a()就不会在被执行了。
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
#include
#include
#include
#include
#include
#include