2022-04-18 15:02:25 -07:00

38 lines
535 B
C

/*
* @@name: copyprivate.2
* @@type: C
* @@compilable: yes
* @@linkable: no
* @@expect: success
* @@version: omp_5.1
*/
#include <stdio.h>
#include <stdlib.h>
float read_next( ) {
float * tmp;
float return_val;
#pragma omp single copyprivate(tmp)
{
tmp = (float *) malloc(sizeof(float));
} /* copies the pointer only */
#pragma omp masked
{
scanf("%f", tmp);
}
#pragma omp barrier
return_val = *tmp;
#pragma omp barrier
#pragma omp single nowait
{
free(tmp);
}
return return_val;
}