はじめてのOpenMP(3)
private指示文
ソースと実行結果を見れば、private指示文の挙動がわかると思います。OpenMPでfor文を並列化するとき、for文で使用されるインデックスは自動的にprivate変数になっています。
#include <omp.h> #include <stdio.h> int main(void){ int i=0,j=10,k=20; #pragma omp parallel { i+=j+k; } printf("i=%d,j=%d,k=%d\n",i,j,k); return 0; }
実行結果
i=240,j=10,k=20
private指示文を使用した場合。
#include <omp.h> #include <stdio.h> int main(void){ int i=0,j=10,k=20; #pragma omp parallel private(i) { i+=j+k; } printf("i=%d,j=%d,k=%d\n",i,j,k); return 0; }
実行結果
i=0,j=10,k=20