首页 > 解决方案 > “[错误] 到/来自 OpenMP 结构化块的无效分支”我有这个错误

问题描述

struct dugum* ara(struct dugum* kok,int aranacakSayi)
{
    double start; 
    double end; 
    start = omp_get_wtime(); 
    int i;
    #pragma omp parallel num_threads(4) shared(start,end,aranacakSayi) private(i)
    {
        #pragma omp for
        for(i=0;i<10;i++) 
        { 
           printf("\n Kontrol edilen sayilar : %d Thread : %d \n \n",kok->sayi,omp_get_thread_num());
    
           if(kok->sayi==aranacakSayi || kok ==NULL  ){
              end = omp_get_wtime(); 
              printf("Calisma zamani %f saniye \n", end - start);
              return kok; 
          }
                
          if (aranacakSayi > kok->sayi) 
             kok = kok->sag;    
         else if (aranacakSayi < kok->sayi) 
             kok = kok->sol;    
       }
    }
}

我正在尝试使用 openMP 进行中序遍历,但出现此错误。代码没有返回“return kok”是有一些错误。我需要帮助来修复此错误这是关于 openMP 结构化块的。

标签: searchtreebinaryopenmp

解决方案


您不能return从并行区域内...(想想看。所有线程应该如何知道其中一个想要返回?)


推荐阅读