00001
00002
00003
00004
00005 extern void abort (void);
00006
00007 int err;
00008
00009 int
00010 main (void)
00011 {
00012 #pragma omp parallel
00013 {
00014 int array[40];
00015 int i;
00016 for (i = 0; i < sizeof array / sizeof array[0]; i++)
00017 array[i] = 0x55555555;
00018
00019 #pragma omp for schedule(dynamic)
00020 for (i = 0; i < 50; i++)
00021 #pragma omp task shared(array)
00022 {
00023 int j;
00024 for (j = 0; j < sizeof array / sizeof array[0]; j++)
00025 if (array[j] != 0x55555555)
00026 #pragma omp atomic
00027 err++;
00028 }
00029 }
00030 if (err)
00031 abort ();
00032 return 0;
00033 }