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*完成了
你要搜索的是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)
我建议您参考其中的规范和示例,以获取有关此构造如何工作的更多信息.