为什么我的For循环使用Open MP产生不同的输出?

时间:2017-03-23 15:24:46

标签: c++ c++11 parallel-processing openmp c++14

我必须使用片段,其中一个是标准的,另一个使用OpenMP。这是第一个:

#include <iostream>

int main(){
double a = 0;
for(int i =0; i<= 100000; i++){
    a+=1;
}

std::cout << a << std::endl;
return 0;
}

这段代码给了我:100001,所以没关系;没问题。

问题是,对于第二个片段:

#include <iostream>

int main(){

double a = 0;
#pragma omp parallel for
for(int i = 0; i<=100000; i++){

    a+=1;

}
std::cout << a << std::endl;
return 0;
}

此代码的结果是:55246,我不知道为什么我得到这个结果而不是100001.

0 个答案:

没有答案