2012-03-27 23:13:14 +00:00
|
|
|
#include <omp.h>
|
|
|
|
|
|
|
|
extern void abort (void);
|
|
|
|
|
|
|
|
int
|
|
|
|
foo (void)
|
|
|
|
{
|
|
|
|
return 10;
|
|
|
|
}
|
|
|
|
|
2015-08-28 15:33:40 +00:00
|
|
|
int
|
2012-03-27 23:13:14 +00:00
|
|
|
main ()
|
|
|
|
{
|
|
|
|
int A = 0;
|
|
|
|
|
|
|
|
#pragma omp parallel if (foo () > 10) shared (A)
|
|
|
|
{
|
|
|
|
A = omp_get_num_threads ();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (A != 1)
|
|
|
|
abort ();
|
|
|
|
|
|
|
|
#pragma omp parallel if (foo () == 10) num_threads (3) shared (A)
|
|
|
|
{
|
|
|
|
A = omp_get_num_threads ();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (A != 3)
|
|
|
|
abort ();
|
|
|
|
|
|
|
|
#pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A)
|
|
|
|
{
|
|
|
|
A = omp_get_num_threads ();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (A != 10)
|
|
|
|
abort ();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|