已排序的指示詞的 A.23 範例
可以有多個已排序的區段與for指定具有ordered子句。 第一個範例中是不相容,因為 API 會指定下列:
"的迴圈反覆運算for建構必須不會執行相同ordered指示詞超過一次,而且它必須不會執行一個以上的ordered指示詞。" (請參閱一節 2.6.6 在頁面上 22)
在此不相容的範例中,所有反覆項目會執行兩個已排序的區段:
#pragma omp for ordered
for (i=0; i<n; i++)
{
...
#pragma omp ordered
{ ... }
...
#pragma omp ordered
{ ... }
...
}
下列標準的範例所示for具有多個已排序的區段:
#pragma omp for ordered
for (i=0; i<n; i++)
{
...
if (i <= 10)
{
...
#pragma omp ordered
{ ... }
}
...
(i > 10)
{
...
#pragma omp ordered
{ ... }
}
...
}