1. 写一个队列需要在其函数之间做同步,首选了std::lock_guard通过RAII的方式来优雅实现确保释放。code很简单,Class自己有一个成员变量mutex, 相关函数在调用前使用其作为构造参数来构造lock_guard即可。
  2. 编译时遇到了问题,死活编译不过,有了这样的报错: note: candidate constructor not viable: 1st argument (‘const std::mutex’) would lose const qualifier. 初看百思不得其解,一度怀疑是不是lock_guard不支持成员变量级的mutex(当稍微想想也不可能,C++如果真做成这样,从使用性上讲就太糟糕了)。后来才发现,使用该mutex的函数全部都是const函数,去掉const以后编译正常。
  3. 这个时候才隐约想起在很久以前搞C++的时候,成员变量级的mutex是不能在const函数中lock的(因为lock是会引起改变的)。直接试了下mutex.lock(),IDE果然直接报错了。但是lock_guard却没有提示,看样子AS的code check还需要进一步提高。
  4. 又捡起了一个C++知识。

C++ std::mutex 与 const函数相关推荐

  1. C++11 并发指南三(std::mutex 详解)

    上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法. Mutex ...

  2. std::mutex详解

    Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mutex> 头文件中,所以如果你需要使用 std::mutex,就必须包含 <mute ...

  3. C++ std::mutex 用法详解

    Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 头文件中,所以如果你需要使用 std::mutex,就必须包含 头文件. 头文件介绍 Mutex 系列类(四 ...

  4. C++11 std::mutex使用以及std::lock_guard自动解锁避免忘记解锁

    文章目录 **std::mutex** std::mutex 的成员函数 示例 **std::lock_guard** std::mutex 头文件是<mutex>,mutex是用来保证线 ...

  5. C++ Error C2280 尝试引用已删除的函数(二)因std::mutex引起的拷贝

    我最近做的项目用到了C++11的多线程库,其中一个类A中有一个类B的成员,而类B的成员中使用到了std::mutex互斥锁,这个互斥锁在B中使用没有任何问题,但是当类B成为一个类A的成员之后,就出现了 ...

  6. E0413: 不存在从 “std::string“ 到 “const char *“ 的适当转换函数

    问题来源:PAT乙级1048 string A, B; cin >> A >> B;if(strcmp(A,B)<0){} //错误代码: E0413: 不存在从 &qu ...

  7. C++多线程:互斥变量 std::mutex

    文章目录 描述 成员函数 总结 描述 头文件 <mutex> 使用 std::mutex <variable> 简介 mutex是一种多线程变成中的同步原语,它能够让共享数据不 ...

  8. const函数和const对象

    const函数和const对象 const修饰函数时,表明该函数不能修改成员变量 const修饰对象时,表明该对象不能引用成员中非const的成员函数 #include <iostream> ...

  9. 除了允许变量被const函数修改之外,'mutable'关键字是否有任何其他用途?

    前段时间我遇到了一些用<code>mutable关键字标记类的成员变量的代码. 据我所知,它只是允许你修改const方法中的变量: class Foo { private: mutable ...

最新文章

  1. 7 centos 设置jvmgc_centos7配置java环境变量
  2. 纽曼皮尔逊准则Matlab实现,基于聂曼-皮尔逊准则的skip模式快速选择方法
  3. OpenGL动感模糊
  4. SpikeSource公司的CEO-Kim Polese访谈
  5. Nauuo and Votes
  6. Apache Velocity官方指南-资源
  7. Windows 应用容器化
  8. 你会选择深圳还是佛山?
  9. bash type php,Linux Bash Shell 寻找PHP(网站)挂马,后门
  10. 字符串处理函数和函数
  11. powerDesigner生成excel版本的数据库文件
  12. webpack@3.6.0(4) -- 配置模块化开发
  13. pyqt5事件与鼠标事件
  14. 今日头条搜索站长平台(入口)功能简介
  15. 所有iOS设备的屏幕分辨率
  16. 如何正确理解开漏输出和推挽输出
  17. 骨传导耳机能保护听力吗?骨传导耳机是怎么传声的
  18. JavaScript基础算法
  19. IOS字体大小与像素的转换
  20. Cuda与cudnn对应关系

热门文章

  1. win32编程常用的数据类型
  2. 学习3D建模可能遇到的问题?
  3. 各大IT公司2012校园招聘笔试面试整理(强烈推荐)
  4. npm淘宝镜像和查看镜像设置
  5. 本地化环境下ArcGIS Python API中的SSL及locale的bug修复过程
  6. vscode中PHP语言的自动补齐,vscode怎么自动补全
  7. shell脚本 -- 用途替换所有json文件(main.json 除外)中的 ios下载链接
  8. Django 跨域问题解决
  9. 在教育机构当老师是一种什么样的体验?
  10. 环签名说的比较的好的一篇文章