一、指令格式
该指令主要用于创建一组线程来执行指定的任务
二、代码
#include <iostream>
#include <omp.h>
#define ARRAY_SIZE 100
using namespace std;
void setNumber(int ids[], int startPos, int nElement,int value)
{
for(int i = 0; i < nElement; ++i)
{
ids[startPos + i] = value;
}
}
void ParallelizeSetNumber(int ids[], int size)
{
int nElementPerThread;
int startPos;
int threadId;
int nThread;
#pragma omp parallel default(shared) private(nElementPerThread,startPos,threadId,nThread)
{
nThread = omp_get_num_threads();
threadId = omp_get_thread_num();
nElementPerThread = size / nThread;
startPos = threadId * nElementPerThread;
if(threadId == nThread - 1)
nElementPerThread = size - startPos;
setNumber(ids, startPos, nElementPerThread, threadId);
}
}
int main()
{
int ids[ARRAY_SIZE];
//init ids
for(auto& e : ids)
e = -1;
ParallelizeSetNumber(ids, ARRAY_SIZE);
//print ids;
for(auto e : ids)
cout << e << " ";
cout << endl;
cin.get();
return 0;
}
其中default与private用于控制变量的属性,在本例中,default用于设置变量的属性为shared,而private则指定明哪些变量是私有的。
三、运行结果