2022-11-04 09:35:42 -07:00

27 lines
493 B
C

/*
* @@name: taskyield.1
* @@type: C
* @@operation: compile
* @@expect: success
* @@version: omp_3.1
*/
#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);
}
}