【C++】C++多线程数据共享问题、互斥量、死锁及解决方法

您所在的位置:网站首页 数据共享问题怎么解决 【C++】C++多线程数据共享问题、互斥量、死锁及解决方法

【C++】C++多线程数据共享问题、互斥量、死锁及解决方法

2024-07-15 22:38| 来源: 网络整理| 查看: 265

目录

一.线程间数据共享的问题

二.保护共享数据的方法

三.死锁

四.死锁的解决方案

五.std::unique_lock

六.锁的粒度

七.unique_lock所有权的传递

一.线程间数据共享的问题

问题:你和你的朋友合租一个公寓, 公寓中只有一个厨房和一个卫生间。 当你的朋友在卫生间时, 你就会不能使用了;或者在购票网站上两个人订票,同一个座位,当一行订票操作时,另一个人就不能再操作或者即使操作也不会成功,否则就会出很多的麻烦。

同样的问题,对于多线程来说,有以下几种情况:

1.当两个线程访问不同的内存位置时,不会存在问题,相当于你和朋友不合租,各住各的;

2.两个线程对共享数据进行操作时,如果只是一起读取,不会出什么问题;

3.但是一个线程要读取,另一个线程要写入,就会出现问题,所以保护共享数据是需要在多线程中考虑的。

以下代码未考虑读数据线程和写数据线程之间的数据共享问题,会导致刚刚分析过的问题而报错。

#include #include #include using namespace std; class OperateData{ public: //写入数据 void writeData() { for (int i = 0; i < 10000; i++) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3