C++为什么不要直接使用lock/unlock

本篇内容介绍了“C++为什么不要直接使用lock/unlock”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、吉隆ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的吉隆网站制作公司

CP.20:使用RAII,永远不要直接使用lock/unlock

Reason(原因)

Avoids nasty errors from unreleased locks.

避免由于锁没有释放而引起的严重问题。

Example, bad(反面实例)

mutex mtx;

void do_stuff()
{
   mtx.lock();
   // ... do stuff ...
   mtx.unlock();
}

Sooner or later, someone will forget the mtx.unlock(), place a return in the ... do stuff ..., throw an exception, or something.

早晚会有人忘记调用mtx.unlock(),将return语句放到...do stuff...的位置,抛出异常,或做点什么。

mutex mtx;

void do_stuff()
{
   unique_lock lck {mtx};
   // ... do stuff ...
}
Enforcement(实施建议)

标记直接调用lock或unlock成员函数的代码。

RAII

资源获取即初始化或者叫RAII,是一种必须在使用之前必须执行获取动作的资源(堆内存,线程,socket,文件,mutex,内存空间,数据库链接-以优先供给方式提供的任何东西)的生命周期和某个对象的生命周期绑定的C++编程技术。

“C++为什么不要直接使用lock/unlock”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


本文名称:C++为什么不要直接使用lock/unlock
当前链接:http://bzwzjz.com/article/ijjgii.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 网站设计公司 自适应网站设计 成都品牌网站设计 重庆网站设计 成都品牌网站建设 重庆外贸网站建设 H5网站制作 企业网站设计 泸州网站建设 公司网站建设 重庆企业网站建设 网站建设费用 网站建设公司 成都响应式网站建设 成都企业网站建设公司 营销型网站建设 达州网站设计 营销网站建设 成都定制网站建设 网站建设改版 网站制作报价