如何用openMP告诉一个线程/一个函数?

时间:2015-05-18 09:36:07

标签: multithreading visual-c++ parallel-processing openmp

我在openMP中开始尝试在我的代码源中使用openMP。我有四个函数,我想为每个线程提供一个函数。这是我的代码:

  int a,b,c,d;
  omp_set_num_threads(4);
  #pragma omp parallel
  {
     a=SetHist1(int (Convert_Mask0(mask)),1);

     b=SetHist2(int (Convert_Mask45(mask)),1);

     c=SetHist3(int (Convert_Mask90(mask)),1);

     d=SetHist4(int (Convert_Mask135(mask)),1);
    }

但这对我不起作用。

1 个答案:

答案 0 :(得分:2)

您可以使用SECTIONS指令在不同的线程上创建每个SetHistX。您也可以根据需要使用TASK指令。

可以使用部分和任务之间的使用差异here

使用sections指令,您的代码看起来像这样:

#pragma omp parallel sections
{
   #pragma omp section
   {
   a=SetHist1(int (Convert_Mask0(mask)),1);
   }
   #pragma omp section
   {
   b=SetHist2(int (Convert_Mask45(mask)),1);
   }
   #pragma omp section
   {
   c=SetHist3(int (Convert_Mask90(mask)),1);
   }
   #pragma omp section
   {
   d=SetHist4(int (Convert_Mask135(mask)),1);
   }
}