【发布时间】:2019-06-15 21:48:30
【问题描述】:
我目前正在学习 OpenMP。在并行区域之外声明的默认变量是公共的,而在并行区域内声明的变量是私有的。并行区域内部的堆栈变量也是私有的。
double A[10];
int index[10];
#pragma omp parallel
{
work(index);
}
printf(%d\n”,index[0]);
但为什么上述示例中的“索引”对每个线程都是公开的?它不应该是私有的,因为它放在堆栈上,堆栈变量是私有的吗?
提前致谢
【问题讨论】:
-
为什么你会认为“堆栈变量是私有的”?如果您写“公共”,您的意思是“共享”吗?您是否也有与this question 中讨论的相同的误解?
-
嗯,我正在为考试而学习,幻灯片上有一行“但并非所有内容都是共享的 - 从并行区域调用的 C 函数中的堆栈变量是私有的”。抱歉,是的,当我说公开时,我的意思是共享
标签: openmp