2.0
omp single nowait
omp critical,omp atomic
#include
#include "omp_testsuite.h"
int my_iterations;
#pragma omp threadprivate(my_iterations)
int omp_single_nowait(FILE * logFile)
{
int nr_iterations;
int total_iterations = 0;
int i;
nr_iterations = 0;
my_iterations = 0;
#pragma omp parallel private(i)
{
for (i = 0; i < LOOPCOUNT; i++)
{
#pragma omp single nowait
{
#pragma omp atomic
nr_iterations++;
} /* end of single*/
} /* end of for */
} /* end of parallel */
#pragma omp parallel private(i)
{
my_iterations = 0;
for (i = 0; i < LOOPCOUNT; i++)
{
#pragma omp single nowait
{
my_iterations++;
} /* end of single*/
} /* end of for */
#pragma omp critical
{
total_iterations += my_iterations;
}
} /* end of parallel */
return ((nr_iterations == LOOPCOUNT) && (total_iterations == LOOPCOUNT));
} /* end of check_single_nowait*/