123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <stdio.h>
- #include <omp.h>
- extern void abort (void);
- void
- parallel (int a, int b)
- {
- int bad, LASTPRIV, LASTPRIV_SEC;
- int i;
- a = b = 3;
- bad = 0;
- #pragma omp parallel firstprivate (a,b) shared (bad) num_threads (5)
- {
- if (a != 3 || b != 3)
- bad = 1;
- #pragma omp for lastprivate (LASTPRIV)
- for (i = 0; i < 10; i++)
- LASTPRIV = i;
- #pragma omp sections lastprivate (LASTPRIV_SEC)
- {
- #pragma omp section
- { LASTPRIV_SEC = 3; }
- #pragma omp section
- { LASTPRIV_SEC = 42; }
- }
- }
- if (LASTPRIV != 9)
- abort ();
- if (LASTPRIV_SEC != 42)
- abort ();
- if (bad)
- abort ();
- }
- int main()
- {
- parallel (1, 2);
- return 0;
- }
|