为什么在使用omp #pragma omp进行调度(动态)时获取正确的tid为什么不能?

时间:2015-07-11 09:18:23

标签: c++ openmp

#pragma omp parallel private(nthreads, tid)                                                                                                                                                               
{                                                                                 

tid = omp_get_thread_num();                                                                                                                                                                             
printf("Hello World from thread = %d\n", tid);                                                                                                                                                          

/* Only master thread does this */                                                                                                                                                                      
if (tid == 0)                                                                                                                                                                                           
  {                                                                                                                                                                                                     
    nthreads = omp_get_num_threads();                                                                                                                                                                   
    printf("Number of threads = %d\n", nthreads);                                                                                                                                                       
   }                                                                                                                                                                                                    

#pragma omp barrier                                                                                                                                                                                      

#pragma omp for schedule(dynamic)                                                                                                                                                                         
  for(int n=0; n<10; ++n){                                                                                                                                                                               
 printf(" %d", n);                                                                                                                                                                                      
 printf(" %d", tid);                                                                                                                                                                                    
 }                                                                                                                                                                                                      


printf("\n");                                                                                                                                                                                           
}                

为什么当我用时间表(动态)打印时我总是得到0,而在使用时间表(静态)时,我看到每个tid打印(0-9)。如果我真的担心那个线程在做什么,我可能不会使用动态,但我只是好奇。

提前致谢。

0 个答案:

没有答案