| int r, r2, r3 = 1; | |
| int bar (void); | |
| void | |
| foo (void) | |
| { | |
| int i = 0, j = 0, k = 0; | |
| #pragma omp parallel | |
| { | |
| if (bar ()) | |
| { | |
| #pragma omp cancel parallel | |
| } | |
| #pragma omp scope reduction (+:r) private (i) | |
| { | |
| #pragma omp scope reduction (+:r2) private (j) | |
| { | |
| #pragma omp single nowait | |
| { | |
| i = 1; | |
| j = 2; | |
| r++; | |
| r2++; | |
| } | |
| } | |
| } | |
| } | |
| #pragma omp parallel | |
| { | |
| if (bar ()) | |
| { | |
| #pragma omp cancel parallel | |
| } | |
| #pragma omp scope reduction (task, +:r) private (i) | |
| #pragma omp scope reduction (task, *:r3) | |
| { | |
| r++; | |
| r3++; | |
| } | |
| } | |
| } |