У меня есть два вида заданий: foobar1
- 3 раза параллельно и foobar2
- 5 раз параллельно.
Моя идея состоит в том, чтобы заставить главный поток создать эти две команды работы. но я сталкиваюсь с одной трудностью.
Возможно ли сделать поток выходящим из параллельного цикла? Я имею в виду реализовать такой код, где основная задача может
избежать первой команды работы, чтобы создать вторую команду
#pragma omp parallel num_threads(8)
{
// first team of task which will execute the foobar1 function in parallel
#pragma omp for schedule(static,1) nowait
for(i = 0; i < 3; i++)
{
#pragma omp master
{
//escape here to create a second team in parallel
}
foobar1();
}
// second team of task which will execute the foobar2
#pragma omp for schedule(static,1) nowait
for(j = 0; j < 5; j++)
{
foobar2();
}
}