(OpenMP)如何在1个线程中启动每个函数1次

A.N*_*R.I 0 c++ multithreading function openmp

我有4个线程,我想一次启动3个功能.每个函数都需要一个线程.
但是这段代码每次启动4次

#pragma omp parallel
    {
        Func1();
        Func2();
        Func3();
    }
Run Code Online (Sandbox Code Playgroud)

我有这个结果:

Func*1*开始了

Func*1*开始了

Func*1*开始了

Func*1*开始了

Func*1*完成了

Func*1*完成了

Func*1*完成了

Func*1*完成了

Func*2*开始了

Func*2*开始了

Func*2*开始了

Func*2*开始了

Func*2*完成了

Func*2*完成了

Func*2*完成了

Func*2*完成了

...

我应该如何更改代码以显示如下:

Func*1*开始了

Func*2*开始了

Func*3*开始了

Func*2*完成了

Func*1*完成了

Func*3*完成了

Mas*_*ano 5

你要搜索的是sections工作共享结构.语法应如下所示:

#pragma omp parallel
{
#pragma omp sections
  {
#pragma omp section
    Func1();
#pragma omp section
    Func2();
#pragma omp section
    Func3();
  }
}
Run Code Online (Sandbox Code Playgroud)

我建议您参考其中的规范和示例,以获取有关此构造如何工作的更多信息.