退出即复位模式
来源:互联网 发布:大数据行业待遇怎么样 编辑:程序博客网 时间:2024/06/02 13:21
举个例子:
在使用一个共享互斥资源前我们要把资源使用的标志位设置为true,然后开始使用,使用完后要把标志位设置为false,让其它用户知道可以使用资源了,要实现这样的功能,传统的方式至少要两行代码! 如下:
bool mIsUsingFlag=false;void Fun(){mIsUsingFlag=true;//do something...mIsUsingFlag=false;}
有没有一行代码就可以完成这样的功能呢?
答案是:使用“退出即复位”的设置模式:
首先创建一个模板类:
template<typename T>class ResetVariableOnExit{public: /** * 构造函数。 * @param variable 保存了原始值的变量。 * * @param value 要设置的变量的新值 */ ResetVariableOnExit(T& variable, const T& value) : mVariable(variable), mOriginalValue(variable) { mVariable = value; //将新值设置给变量 } /** * 恢复原始值 */ ResetVariableOnExit() { mVariable = mOriginalValue; }private: T& mVariable; //变量的引用 T mOriginalValue; //保存原始值};
之后就可以像下面这样使用了:
bool mIsUsingFlag=false;void Fun(){ResetVariableOnExit<bool> setter(mIsUsingFlag, true);//do something...}
这样就只要一行代码就实现上面的功能,而且不要担心忘记复位而带来的麻烦!
- 退出即复位模式
- dm6437 默认复位ccdc处于enable模式
- 返回键处理即程序退出对话框
- Observer模式,即观察者模式
- 如何退出恢复模式?
- Hadoop退出安全模式
- vim退出插入模式
- hadoop退出安全模式
- hadoop退出安全模式
- stm32f0系列在SWD模式下载时复位失败
- 进程退出线程即结束的代码验证
- 委托设计模式(即代理模式)
- FTP协议中主动模式(即PORT模式)与被动模式(即PASV模式)的介绍
- 复位与复位电路
- 复位和复位流程
- 怎么退出VI编辑模式
- SlickEdit如何退出全屏模式?
- Dispatchmessage debug 模式无法退出
- 深入了解ETL
- java的简单逻辑博彩游戏craps
- HDU 4334 - Trouble
- C++: byte和int的相互转化
- mm_struct
- 退出即复位模式
- 修改数据窗口指定单元的颜色
- PCM (digital audio) plugins
- ubuntu12.04下安装QQ聊天工具
- EXTJS Ajax数据请求(一)
- 高矮胖瘦的模特
- png图片结构分析与加密解密原理
- #include<cstdio>
- Android_launcher的源码详细分析