OpenMP-Examples/sources/Example_taskyield.1c.c
2015-01-13 11:38:24 -08:00

27 lines
487 B
C

/*
* @@name: taskyield.1c
* @@type: C
* @@compilable: yes
* @@linkable: no
* @@expect: success
*/
#include <omp.h>
void something_useful ( void );
void something_critical ( void );
void foo ( omp_lock_t * lock, int n )
{
int i;
for ( i = 0; i < n; i++ )
#pragma omp task
{
something_useful();
while ( !omp_test_lock(lock) ) {
#pragma omp taskyield
}
something_critical();
omp_unset_lock(lock);
}
}