C++ 之 RAII

來源:互聯網
上載者:User

--一下很多東西是看書和來自網路學習後的總結:

簡單而實用的東西,自己用了好多次了,也不知道原來是它 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  在其生命週期的範圍內,自然會負責管理和消亡對因的臨界區資源。

一定程度上 解決了資源管理的一些麻煩。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.