如何在c ++中使用openmp并行运行两组代码

时间:2015-05-11 15:16:46

标签: c++ multithreading parallel-processing openmp

我有两个彼此无关的功能,例如:

int add(int num)
{ 
     int sum=0;
     for(i=0;i<num;++i)
         sum+=i;
    return sum;
}

int mul(int num)
{  
    int mul=1;
    for(int i=1;i<num;++i)
       mul * i;
    return mul;
}

我起诉他们如下:

auto x=add(100);
auto m=mul(200);
cout<<a<< "    " <<m<<endl;

如何使用OpenMP并行运行它们?我知道我可以并行运行它们,如果我创建一个新线程并运行该线程中的一个函数并实现同步机制,以确保两个线程按时间调整cout被调用。

另外我知道我可以使用openMP parallel for我的循环,但假设它不存在。

1 个答案:

答案 0 :(得分:0)

在OpenMP中解决此问题的常用方法是sections构造。它使您能够定义顺序代码的部分,这些部分可以由不同的线程同时计算。每个部分都以omp section指令/ pragma。

开头