--一下很多东西是看书和来自网络学习后的总结:
简单而实用的东西,自己用了好多次了,也不知道原来是它 RAII --- Resource Acquire Is Initial
起源来自C++创始人Bjarne Stroustrup的思想,主要解决的是资源的管理(主要是释放问题),C++相比较java这类语言,在资源释放上,更多的是需要程序员手动处理。
所以,利用对象的生命周期(栈上的对象),在对象生命周期的开始和结束来管理资源(任何资源,可以是连接,可以是一块内存),对象的创建 创建(初始化)和 对象的消亡(释放资源);
很多时候我也习惯把栈上的对象叫做代理,它只是个管理具体资源的中介,如下例子,AutoLock类实例 只是 临界区 这个系统资源的一个代理,真正需要管理的资源是临界区。
class AutoLock
{
public:
AutoLock( )
{
Init***(mCriticalSection) //初始化临界区
}
~AutoLock( )
{
Delete**(mCriticalSection) //删除临界区
}
void Lock( )
{
Enter**( ) //进入临界区
}
void Unlock( )
{
Leave***() //推出临界区
}
CRITICAL_SECTION mCriticalSection;
};
如果存在一个对象AutoLock myLock 在其生命周期的范围内,自然会负责管理和消亡对因的临界区资源。
一定程度上 解决了资源管理的一些麻烦。