对于下面的代码,如果list_file.size()为12,即我们的线程数多于for循环中的迭代数,那么对于运行每个任务块的线程数我们能说什么呢?每个任务块将只运行一个线程,还是每个任务块将运行一个以上线程?
omp_set_num_threads(24);
#pragma omp parallel
{
#pragma omp for
for (int m = 0; m < list_file.size(); m++)
{
#pragma omp task
{
// do something
}
}
}
答案 0 :(得分:0)
每个任务区域将由一个线程执行。 OpenMP不会使用更多线程来执行单个任务。因此,如果外部并行循环仅生成12个任务,则最多只能使12个线程处于繁忙状态。