11#define delay(n) my_sleep(((double)n)/1000.0)
15 passed = (omp_get_max_task_priority() == 2);
16 printf(
"Got %d max priority via env\n", omp_get_max_task_priority());
21 printf(
"parallel 1 spawns 4 tasks for primary thread to execute\n");
22 #pragma omp parallel num_threads(2)
24 int th = omp_get_thread_num();
27 #pragma omp task priority(1)
29 int val, t = omp_get_thread_num();
30 #pragma omp atomic capture
32 printf(
"P1: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
35 #pragma omp task priority(2)
37 int val, t = omp_get_thread_num();
38 #pragma omp atomic capture
40 printf(
"P2: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
43 #pragma omp task priority(0)
45 int val, t = omp_get_thread_num();
46 #pragma omp atomic capture
48 printf(
"P0exp: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
53 int val, t = omp_get_thread_num();
54 #pragma omp atomic capture
56 printf(
"P0imp: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
64 #pragma omp atomic read
69 printf(
"parallel 2 spawns 4 tasks for worker thread to execute\n");
70 #pragma omp parallel num_threads(2)
72 int th = omp_get_thread_num();
75 #pragma omp task priority(1)
77 int val, t = omp_get_thread_num();
78 #pragma omp atomic capture
80 printf(
"P1: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
83 #pragma omp task priority(2)
85 int val, t = omp_get_thread_num();
86 #pragma omp atomic capture
88 printf(
"P2: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
91 #pragma omp task priority(0)
93 int val, t = omp_get_thread_num();
94 #pragma omp atomic capture
96 printf(
"P0exp: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
101 int val, t = omp_get_thread_num();
102 #pragma omp atomic capture
104 printf(
"P0imp: val = %d, thread gen %d, thread exe %d\n",
val, th, t);
114 #pragma omp atomic read
122 #pragma omp atomic read
129 printf(
"failed, passed = %d (should be 10)\n", passed);