新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“C++为什么不要直接使用lock/unlock”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
我们提供的服务有:网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、吉隆ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的吉隆网站制作公司
CP.20:使用RAII,永远不要直接使用lock/unlock
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 ...
}
标记直接调用lock或unlock成员函数的代码。
RAII
资源获取即初始化或者叫RAII,是一种必须在使用之前必须执行获取动作的资源(堆内存,线程,socket,文件,mutex,内存空间,数据库链接-以优先供给方式提供的任何东西)的生命周期和某个对象的生命周期绑定的C++编程技术。
“C++为什么不要直接使用lock/unlock”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!