成都网站建设设计

将想法与焦点和您一起共享

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://chengdu.cdxwcx.cn/article/ijjgii.html