次の方法で共有


A.6 lastprivate 句の使用

正しい実行が、ループの最後の反復処理によって変数に割り当てられる値に依存する場合があります。そのようなプログラムでは、すべてのそのような変数を lastprivate 句 (27 ページの セクション 2.7.2.3) の引数として列挙する必要があります。結果として、その変数の値は、ループが順次実行された場合と同じになります。

#pragma omp parallel
{
   #pragma omp for lastprivate(i)
      for (i=0; i<n-1; i++)
         a[i] = b[i] + b[i+1];
}
a[i]=b[i];

上記の例において、並行領域の終了時における i の値は、順次実行の場合と同じ n–1 に等しくなります。