【C++】C++多线程数据共享问题、互斥量、死锁及解决方法 |
您所在的位置:网站首页 › 数据共享问题怎么解决 › 【C++】C++多线程数据共享问题、互斥量、死锁及解决方法 |
目录 一.线程间数据共享的问题 二.保护共享数据的方法 三.死锁 四.死锁的解决方案 五.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 |