C++ 关于打开MP共享变量

C++ 关于打开MP共享变量,c++,c,multithreading,openmp,C++,C,Multithreading,Openmp,考虑到以下准则: int counter=0; #pragma omp parallel { counter=update(counter); /...do something.../ } OpenMP是否确保共享变量的更新对并行区域中的所有OMP线程可见?或者我必须设置一些同步/屏障,以确保池中的每个线程始终可以加载共享变量的最新更新值?上述代码不为您执行任何同步工作,因此是的。所有线程都需要显式同步,以便为变量计数器使用新的更新值。无论如何,如果可能的话,你应该尽量避免。按

考虑到以下准则:

int counter=0;

#pragma omp parallel 
{
   counter=update(counter);
   /...do something.../
}

OpenMP是否确保共享变量的更新对并行区域中的所有OMP线程可见?或者我必须设置一些同步/屏障,以确保池中的每个线程始终可以加载共享变量的最新更新值?

上述代码不为您执行任何同步工作,因此是的。所有线程都需要显式同步,以便为变量计数器使用新的更新值。无论如何,如果可能的话,你应该尽量避免。按照上面的代码结构,在并行区域之前调用update()。