C++ 线程 共享资源保护
来源:互联网 发布:对人工智能的看法 编辑:程序博客网 时间:2024/06/07 16:44
一、C++互斥量
< mutex >头文件介绍
Mutex 系列类(四种)
- std::mutex,最基本的 Mutex 类。
- std::recursive_mutex,递归 Mutex 类。
- std::time_mutex,定时 Mutex 类。
- std::recursive_timed_mutex,定时递归 Mutex 类。
Lock 类(两种)
- 列表内容std::lock_guard,与 Mutex RAII 相关,方便线程对互斥量上锁。
- std::unique_lock,与 Mutex RAII 相关,方便线程对互斥量上锁,但提供了更好的上锁和解锁控制。
< shared_mutex >头文件介绍
二、遇到的问题
1.问题:某次使用mutex时发现,mutex无效,两个线程遇到mutex时并没有被阻塞。
原因:经过多番盘查,发现mutex是类的成员变量,而每个线程中都新建该类。此时mutex只在类对象中有效,即生命周期只在类的对象中,对象销毁后,mutex也销毁。结果是,两个线程中使用的并不是同一个mutex,而是两个不同的mutex,结果mutex并没有达到保护资源的目的,事与愿违。
结论:使用mutex保护共享资源时,mutex应申明为全局或者静态变量。或者至少要保证两个线程使用的是同一个mutex。
0 0
- C++ 线程 共享资源保护
- 线程安全与共享资源
- 线程共享资源的问题
- 线程安全与共享资源
- 线程中的共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 线程安全与共享资源
- 初学多线程(一)--保护共享资源
- 6 线程安全与共享资源
- 小白学c++之多线程共享资源
- 【java线程安全与共享资源】
- 内网渗透使用代理访问内网
- 微信支付与支付宝的封装
- 程序命名的一些提示
- 设计模式之装饰器模式
- Httpclient post和get请求
- C++ 线程 共享资源保护
- eclipse出错打不开:Failed to load the JNI shared library
- Java实现链表结构的头插法与尾插法
- 数论基础
- C语言入门——多个数学问题求解
- Hadoop 图处理
- 开发环境变量配置
- Windows 10 不能搜索本地应用程序
- 关于用Eclipse的JSP的成功连接SQL server 2008代码分享