并行调用函数是否足以让它并行执行?

Does calling a function in parallel enough to have it execute in parallel?

假设我有一段代码如下(当然,这并不意味着要执行,只是一个示例来尝试理解这个概念,因为我的问题是一个常识性问题)

int main()
{
#pragma omp parallel 
myfunction();
return 1;
}

myfunction(){
//do some work
}

我知道这意味着我的函数将被调用多次(取决于我计算机的默认线程数),但是,这些多次是并行执行的,还是我应该做类似的事情:

int main()
{
#pragma omp parallel 
myfunction();
return 1;
}

#pragma omp parallel
myfunction(){
//do some work
}

要并行执行函数,请执行第一个:

int main()
{
   #pragma omp parallel 
   myfunction();
   return 1;
}

myfunction(){
//do some work
}

OpenMP 编译指示被添加到代码块中,其中还可以包含方法调用。它们不会添加到方法签名中。