mutable关键字_C++干货系列——const真理大讨论(二)mutable

本文深入探讨了C++中mutable关键字的作用,它用于在保持成员函数接口不变的情况下允许内部修改对象状态。通过Mutex示例解释了在多线程环境下如何使用mutable确保线程安全,同时讨论了mutable与lambda表达式的结合,提醒开发者在使用时注意代码设计的优化和重构。
摘要由CSDN通过智能技术生成
背景图《多变的铁人》

接着上篇文章说,当我们还在语义const和语法const的实现效果不一致中苦苦挣扎的时候,我们实际需要的,是一种手段声明变量在封装内部为一种“可变的”状态,但对外提供表现出来的应该是const属性。mutable是在C++中被讨论相对较少的一个关键字。但是它却十分有用,而且在你想写出const正确的代码时几乎不可避免会用到它。

我们的核心观点在于,在外部表现为const的变量在内部转变为非const这一行为应该尽量不被外部所感知。然而如果我们定义了一个函数为const后,编译器不会允许我们再改变任何一个成员变量,即便在外部它表现出const属性,这就是最核心的矛盾。

接着上篇文章中Mesh类的getVolume()例子,我们继续深入探讨一下:

Mutex

在上篇文章中,我们使用的Mesh类并不是线程安全的。所以在一个多线程的应用中,一个Mesh类可能会被多个线程共享,我们可能会用互斥锁Mutex来保证数据的线程安全。像下边这样:

 class Mesh {
    
   std::vector<Vertex> vertices;    //模型顶点的集合
   std::mutex mtx;
   double volume;              //计算出来的体积
   bool volumeCalculated;      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值