CPP多线程实现并行计算
来源:互联网 发布:java.util.list.sort 编辑:程序博客网 时间:2024/05/11 00:22
#include <iostream>#include <mutex>#include <future>#include <thread>#include <chrono>#include <vector>#include <cstdlib>using namespace std;#define COUNT 5000000long long add(vector <long long >*arr, long long start, long long count){static mutex m;//仅仅初始化一次int sum(0);//保存结果for (long long i = 0; i < count; i++){sum += (*arr)[start+i];//根据下标 累加}{lock_guard<mutex>lckg(m);//锁定cout <<"线程ID:"<< this_thread::get_id() <<"count="<<count<<"sum="<<sum<< endl;}return sum;}void main(){vector<long long>myint(COUNT);//开辟数组大小for (int i = 0; i < COUNT; i++)//填充数据 赋值{myint[i] = (i+1)%1000;//限定数据范围 0~999//cout << myint[i] << "";}//future < vector<long long>>abc ;vector<future<long long >>result;//实现并行计算 获取CPU核心个数 创建线程必须为CPU核心的个数long long cpus = thread::hardware_concurrency();cout << "cpu核心个数:" << cpus << endl;//启动线程 存储结果 使用线程分块for (long long i = 0; i < cpus * 2; i++){//<span style="font-family: Arial, Helvetica, sans-serif;">//线程切割 </span>线程分块long long batch_each = COUNT / (cpus * 2);if (i == cpus * 2-1){batch_each = COUNT - COUNT / (cpus * 2)*i;//让最后一个线程承载多点}result.push_back(async(add,&myint,i*batch_each,batch_each));//压入数据}//分数据long long lastresult(0);//最终结果//汇总数据for (long long i = 0; i < cpus * 2; i++){lastresult += result[i].get();//累加}cout << "lastresult ="<< lastresult << endl;cin.get();}
0 0
- CPP多线程实现并行计算
- 一、Fourinone如何实现多线程并行计算
- Linux下利用多线程实现矩阵相乘的并行计算
- 【多线程】——join()方法实现并行计算
- 并行计算的多线程数据结构
- 并行计算的多线程数据结构
- 并行计算的多线程数据结构
- Python-多线程与并行计算
- 并行计算--Java--求π并行实现
- 并行计算--C#--求π并行实现
- 并行计算--Java--求π并行实现
- 利用IPython实现并行计算
- MPI实现并行计算统计数据
- 浅谈多核CPU、多线程与并行计算
- 浅谈多核CPU、多线程与并行计算
- 浅谈多核CPU、多线程与并行计算
- 用于并行计算的多线程数据结构,
- 浅谈多核CPU、多线程与并行计算
- shell之变量引用
- [leetCode] House Robber
- 搭建Eclipse的android工程环境
- hdu 5412(树套树求第k小数字+离散化)
- HDU 5147 Ferries Wheel(暴力 数组)——BestCoder Valentine's Day Round
- CPP多线程实现并行计算
- CentOS同步网络时间
- 微信抢红包源码
- javadbf中文乱码
- UEFI+GPT安装kila linux2.0和win8.1双系统
- Leetcode_Palindrome Partitioning
- Android应用界面组件
- Java内存模型
- HPU 3639--Hawk-and-Chicken【SCC缩点反向建图 && 求传递的最大值】