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()。