C++ 之 RAII

--一下很多东西是看书和来自网络学习后的总结:

简单而实用的东西,自己用了好多次了,也不知道原来是它 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  在其生命周期的范围内,自然会负责管理和消亡对因的临界区资源。

一定程度上 解决了资源管理的一些麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值