次の方法で共有


A.23 ordered ディレクティブの例

ordered 句が指定された for により、複数の ordered セクションを持つことができます。API の以下の仕様により、最初の例は規則違反になります。

"for コンストラクトのループの 1 回の反復処理で、同じ ordered ディレクティブを複数回実行することはできません。また、複数の ordered ディレクティブを実行することもできません。"(22 ページのセクション 2.6.6 を参照)

この規則違反の例では、すべての反復処理が 2 つの ordered セクションを実行します。

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    #pragma omp ordered
    { ... }
    ...
    #pragma omp ordered
    { ... }
    ...
}

次の準拠している例では、複数の ordered セクションを持つ for を示します。

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    if (i <= 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
    (i > 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
}