我刚开始玩 OpenMp 并对这个问题感到非常困惑。假设我声明一个数组int a[10]
并在某个循环中使用它。#pragma omp parallel for private(a)
和 和有什么不一样#pragma omp parallel for shared(a)
?对我a
来说只是一个指向数组第一个元素的指针,根据我读过的内容,该private
构造将为每个线程制作一个变量的副本,并且如果我不使用构造,也会非常奇怪地用随机值初始化它。firstprivate
所以我的问题是,如果我使用private
构造,语义上会发生什么?它会创建一组指针并将它们分配给创建的每个线程,还是会创建整个数组的一组副本并让每个线程单独使用它们?
非常感谢。