C中的Openmp线程控制

时间:2013-02-17 00:34:44

标签: openmp

如果我有一个并行的部分代码,是否可以为每个部分分配一个特定的线程,即某种类型

#pragma omp sections num_threads(2)
{
   #pragma omp section  //<---assigned to master thread
    {
      //do something
     }
    #pragma omp section  //<---assigned to the other thread
    {
      //do something
     }

}

2 个答案:

答案 0 :(得分:3)

将OpenMP节分配给线程是以依赖于实现的方式完成的。导致特定执行线程的唯一指令是master

如果您确实需要为每个线程提供特定于线程的工作,请在omp_get_thread_num()的返回值上使用条件:

#pragma omp parallel num_threads(2)
{
   switch (omp_get_thread_num())
   {
      case 0:
         // Code for thread 0
         break;
      case 1:
         // Code for thread 1
         break;
      default:
         break;
   }
}

答案 1 :(得分:0)

要分配给主线程,您可以使用

#pragma omp master