C++11多线程原子类型
来源:互联网 发布:08最新电影源码 编辑:程序博客网 时间:2024/06/09 18:43
C++11中10个线程同时竞争资源,会出现竞争问题
处理方式1,mutex
#include<iostream>#include<vector>#include<thread>#include<functional>#include <time.h>#include<atomic> #include<mutex>using namespace std;mutex mut;void func(int &counter){ mut.lock();for(int i=0;i<100001;++i) ++counter;mut.unlock();}int main(){clock_t start = clock();int counter=0; vector<thread> threads;for(int i=0;i<10;++i){threads.push_back(thread{func,ref(counter)});}for(auto &t:threads){t.join();}clock_t finish = clock();cout<<"Result = "<<counter<<endl;cout<<"duration:"<<finish -start<<"ms"<<endl;return 0; }
处理方式2:原子操作
#include<iostream>#include<vector>#include<thread>#include<functional>#include <time.h>#include<atomic> #include<mutex>using namespace std;//mutex mut;void func(atomic<int> &counter){ //mut.lock();for(int i=0;i<100001;++i) ++counter; //mut.unlock();}int main(){clock_t start = clock();atomic<int> counter(0); vector<thread> threads;for(int i=0;i<10;++i){threads.push_back(thread{func,ref(counter)});}for(auto &t:threads){t.join();}clock_t finish = clock();cout<<"Result = "<<counter<<endl;cout<<"duration:"<<finish -start<<"ms"<<endl;return 0; }
阅读全文
0 0
- C++11多线程原子类型
- C++11多线程(十二):《atomic 类型详解四:C 风格原子操作介绍》
- C++,多线程:原子操作解决线程冲突
- c++11 多线程编程--原子
- C++11常用特性学习——多线程优化初步(原子类型/lambda语句)
- 【Java多线程】-原子类型-java.util.concurrent.atomic
- C++11 并发指南(atomic 类型详解四 C 风格原子操作介绍)
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
- C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)
- C++11 多线程编程 原子变量
- C++11多线程的原子操作
- C++11特性原子类型——多原子类型并行访问的串行化测试
- 多线程----原子操作
- 多线程的原子锁
- windows多线程--原子操作
- 多线程之原子操作
- 多线程与原子操作
- 【数据库】NoSQL崛起原因
- 求二叉树两节点的最低公共节点
- OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度
- poj 2449 Remmarguts' Date (A*,k短路)
- 软件需求工程 课堂笔记5
- C++11多线程原子类型
- Python小程序 -- 人民币小写转大写辅助工具
- HDU4596Yet another end of the world(扩展欧几里得)
- 1030. 完美数列(25)--PAT乙级
- 在windows10上安装tensorflow(GPU)
- java 实现排列组合Permutation and Combination和链式不相邻排列组合和环形不相邻排列
- HDU
- java连接oracle数据库代码
- 基于CentOS的MYSQL基础介绍