C++ RAII机制

一、C++ RAII机制

1、什么是RAII?

RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。

2、为什么要使用RAII?

RAII是用来管理资源、避免资源泄漏的方法。在编程使用系统资源时,都必须遵循一个步骤:
1)申请资源
2)使用资源
3)释放资源
第一步和第二步缺一不可,因为资源必须要申请才能使用的,使用完成以后,必须要释放,如果不释放的话,就会造成资源泄漏。但是往往在编程过程中,会遇到异常分支不释放的问题。因此、需要使用RAII来对资源进行自动化管理,避免出现资源泄漏问题。

3、Lock类

直接使用mutex锁,如果在临界区抛出异常或者走到异常分支return,就会导致没有解锁就退出的问题,此时很可能会发生死锁。lock_guard采用"资源分配时初始化"(RAII)方法来加锁、解锁,极大地简化了程序员编写mutex相关的异常处理代码。C++11的标准库中提供了std::lock_guard类模板做mutex的RAII。lock_guard的优点是在构造时自动对mutex加锁,在作用域结束/析构时,自动对mutex进行解锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值