Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C OpenMP竞争条件?_C_Openmp_Race Condition - Fatal编程技术网

C OpenMP竞争条件?

C OpenMP竞争条件?,c,openmp,race-condition,C,Openmp,Race Condition,我读到OpenMP中的变量在默认情况下是共享的。这是否意味着在下面的代码中,应该对从0到N-1的所有数字求和,存在竞争条件 int sum = 0,i; #pragma omp parallel for for (i = 0; i < N; i++) sum+=i; int sum=0,i; #pragma-omp并行 对于(i=0;i

我读到OpenMP中的变量在默认情况下是共享的。这是否意味着在下面的代码中,应该对从0到N-1的所有数字求和,存在竞争条件

int sum = 0,i;
#pragma omp parallel for
for (i = 0; i < N; i++)
    sum+=i;
int sum=0,i;
#pragma-omp并行
对于(i=0;i
是的,存在竞争条件。您应该在pragma中添加
reduce(+:sum)
。这将有效地在每个线程中创建不可见的私有副本,然后在循环后对它们求和。

并且也将
i
private?这在这里是不必要的,因为openmp“for”中的循环迭代变量是自动私有的。