gpt4 book ai didi

c - 并行区域内的这个指针变量是共享的还是私有(private)的?

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:41 26 4
gpt4 key购买 nike

我在 HPC 类(class)中进行了测验,我对以下问题感到有些困惑。

In the following C code, is the variable *y inside foo_bar function shared or private? Explain why.

int x;
#pragma omp parallel
foo_bar(&x);
...

void foo_bar(int *y)
{ ... }

这个问题的理想答案是“共享”,因为变量x定义在并行区域之外,但我认为这个问题没有意义,因为* y 可以根据上下文共享或私有(private)。并且问题明确地是关于 *y 的,它没有询问任何关于 x 的问题。此外,如何知道是否没有定义其他变量(例如,z)来代替并行区域内的省略号,并且未调用 foobar(&z)在那里?

还是我遗漏了什么?

最佳答案

它是共享的,因为它是一个全局变量并且在堆栈之外声明。 int x 将属于此 Rutgers page 中说明的内存的“data+bss”部分这是跨线程共享的。

由于 y = &x,问题实际上只是询问 x 是否在线程之间共享,尽管我确实看到这会让人感到困惑。

关于c - 并行区域内的这个指针变量是共享的还是私有(private)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com