头文件 |
2017-11-25 08:56 |
在qt下面是用openmp报错
- #pragma omp parallel for num_threads(2)
for(int i = 0 ;i < y; i++){ for(int j = 0 ;j < x;j++){ QPoint point; QColor c; QPen pen; float r=0,g=0,b=0;
if(values[i*x+j]>0){ r = 1 ; g = 1 - values[i*x+j] / maxData ; g = g<0?0:g; b = g; }else{ r = 1 + values[i*x+j] / maxData ; r = r<0?0:r; g = r; b = 1; } /* if(i==j){ r=1; g=0; b=0; }*/ c.setRgbF(r,g,b); pen.setColor(c); point.setX(startX+j); point.setY(startY+i); painter->setPen(pen); //printf("i = %d\tj=%d\n",i,j); painter->drawPoint(point); } } #pragma omp barrier
单个线程的时候是可以执行的,在设置多个线程之后就出现Segmentation fault或者*** glibc detected *** ./seismicVS: malloc(): memory corruption (fast): 0x00000000021a380f ***。我如果把上面代码中的painter->setPen(pen)这句话注释掉,就可以执行通过。想请问,这到底是什么原因? |
|