12345678910111213141516171819202122232425262728 |
- int
- main ()
- {
- int a, b, c, d;
- #pragma omp parallel num_threads (6)
- #pragma omp single
- {
- #pragma omp task depend(out: c)
- c = 1;
- #pragma omp task depend(out: a)
- a = 2;
- #pragma omp task depend(out: b)
- b = 3;
- /* The above 3 tasks can be scheduled in any order. */
- #pragma omp task depend(in: a) depend(mutexinoutset: c)
- c += a;
- #pragma omp task depend(in: b) depend(mutexinoutset: c)
- c += b;
- /* The above 2 tasks are mutually exclusive and need to wait
- for the first and second or first and third tasks respectively. */
- #pragma omp task depend(in: c)
- d = c;
- /* The above task needs to wait for the mutexinoutset tasks. */
- }
- if (d != 6)
- __builtin_abort ();
- return 0;
- }
|