当前位置: 代码迷 >> 多核软件开发 >> 使用OPENMP后,这个结果不是小弟我想的
  详细解决方案

使用OPENMP后,这个结果不是小弟我想的

热度:6997   发布时间:2013-02-26 00:00:00.0
使用OPENMP后,这个结果不是我想的
#include "iostream"
#include <omp.h>
#include <math.h>
using namespace std;
int main(int argc,char *argv[])
{  
#pragma omp parallel
{
  #pragma omp for 
for( int i=0;i<10;i++)
{
printf("i=%d,ThreadID=%d,CPU=%d\n",i,omp_get_thread_num(),omp_get_num_procs());
}
}

  printf("finished.\n");
return 0;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
结果是
i=0,ThreadID=0,CPU=2
i=0,ThreadID=0,CPU=2
i=5,ThreadID=1,CPU=2
i=1,ThreadID=0,CPU=2
i=6,ThreadID=1,CPU=2
i=2,ThreadID=0,CPU=2
i=7,ThreadID=1,CPU=2
i=3,ThreadID=0,CPU=2
i=8,ThreadID=1,CPU=2
i=4,ThreadID=0,CPU=2
i=9,ThreadID=1,CPU=2
finished.
Press any key to continue

为什么i=0执行了2次?求解释

------解决方案--------------------------------------------------------
#pragma omp parallel for private(i)试试