并行计算例子
程序员文章站
2022-03-06 13:57:33
...
#include <iostream>
#include <vector>
#include <algorithm>
#include <omp.h>
#include <functional>
using namespace std;
typedef std::vector<int>CVectInt;
typedef std::vector<CVectInt>CArrayInt;
/*
vs2008 首先要开始并行计算支持
1、工程 c++ -> 语言 -> openMp支持 ->是(/openmp)
*/
void omp_test(CArrayInt inData, int nNumber)
{
CArrayInt vRet;
//1、设置线程数
omp_set_num_threads(omp_get_num_procs()* nNumber);
//3、开始计算
#pragma omp parallel for
for (int i = 0; i < inData.size(); i++)
{
std::sort(inData[i].begin(),inData[i].end(),std::greater<int>());
#pragma omp critical //对结果加锁
{
vRet.push_back(inData[i]);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
CArrayInt inPut;
for (int i = 0; i< 100; i++)
{
CVectInt tmp;
for (int j = 0; j< 10; j++)
{
tmp.push_back(j);
}
inPut.push_back(tmp);
}
omp_test(inPut,2);
return 0;
}