您的位置:首页 > 编程语言 > C语言/C++

C++ 之 RAII

2013-06-10 23:10 225 查看
--一下很多东西是看书和来自网络学习后的总结:

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

一定程度上 解决了资源管理的一些麻烦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: