欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

并行计算例子

程序员文章站 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;
}