C++为什么不要拿着锁调用未知代码

技术C++为什么不要拿着锁调用未知代码本篇内容主要讲解“C++为什么不要拿着锁调用未知代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++为什么不要拿着锁调用未知代码”吧

本文主要讲解“C为什么不用锁调用未知代码”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学会“C为什么不用锁调用未知代码”!

CP.22:永远不要拿着锁调用未知代码(例如callback)

Reason(原因)

如果你不知道一段代码是做什么的,你就有陷入死锁的风险。

如果你不知道一段代码会做什么,你将面临死锁的风险。

Example(实例)

void do_this(Foo* p)

{

lock _ guard mutex lck { my _ mutex };

//.做某事.

p-act(my _ data);

//.

}如果你不知道Foo:act会做什么(可能这是一个会调用派生类成员的虚函数),它也可能(递归)调用do_this,导致my_mutex死锁。它还可能锁定另一个互斥体,并且无法在合理的时间内返回它,从而导致调用do_this的所有代码的延迟。

Example(示例)

调用未知代码导致的问题的一个常见例子是,被调用的函数试图在锁定状态下重新访问对象。这个问题通常可以通过使用可重入递归互斥来解决。示例:

递归_ mutex my _ mutex

模板类型名称操作

做某事(行动f)

{

unique _递归_ mutex lck { my _ mutex };

//.做某事.

f(这个);//f将对此做一些事情

//.

}如果f()调用了*this上的操作,我们必须确保对象的不变量在调用之前保持不变。

如果,因为f()可能针对*这个调用操作,我们必须确保在调用之前对象是不变量的。

Enforcement(实施建议)

用非递归函数调用虚函数的标志

标记调用包含不可重入互斥体的虚拟函数的情况。

用非递归函数调用回调的标志

标记调用持有不可重入互斥锁的回调函数的情况。

至此,相信大家对“C为什么不用锁调用未知代码”有了更深的理解,那么就让我们在实践中去做吧!这是网站。更多相关内容,可以去相关渠道查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116967.html

(0)

相关推荐

  • dynamodb入门(dynamodb的使用方法)

    技术如何解决DynamoDB的问题如何解决DynamoDB的问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。DynamoDB 是 Amaz

    攻略 2021年12月23日
  • 3v,3V的电压对人体安全么

    技术3v,3V的电压对人体安全么人们通常把电击电流分为感知电流3v、反应电流、摆脱电流和心室纤颤电流等 经验证明,通过人体的电流不超过10 mA,触电人可以摆脱电源,不会造成事故;通过人体的电流超过10 mA时,人就有生

    生活 2021年10月24日
  • javascript如何实现点击复制(javascript中向下复制快捷键)

    技术javascript怎么实现选中复制的功能这篇文章主要讲解了“javascript怎么实现选中复制的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascri

    攻略 2021年12月21日
  • 柯基多少钱,养一只柯基一年大概要多少钱

    技术柯基多少钱,养一只柯基一年大概要多少钱这个看你怎么养了!狗粮、漱口水、营养膏、沐浴露零食、驱虫药、滴耳液、眼药水啥的,都是消耗品柯基多少钱。还有必需品也不少,这些东西价格不等。随便一说开销就上去了。
    不过今天我就按照

    生活 2021年10月21日
  • hive怎么用sql看建表语句(hive严格模式的sql怎么写)

    技术hive ETL业绩报表sql怎么写这篇文章主要讲解了“hive ETL业绩报表sql怎么写”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hive ETL业绩报表sq

    攻略 2021年12月23日
  • 抖音刷赞网址,免费抖音双击赞网站?

    技术抖音刷赞网址,免费抖音双击赞网站?抖音点赞、抖音粉丝、抖音评论、抖音播放是怎么刷合适?如今越来越多的人都会玩抖音,因为抖音里面有特别多有趣的内容,很多的用户会去把自己生活当中比较有趣的一些生活经验或者是生活经历发在抖

    测评 2021年11月10日