#pragma omp parallel sections num_threads(2)
{
#pragma omp section
{
while(fade <=1){
for(i = 0; i != srcImage.width();++i)
{
for(j = 0; j != srcImage.height();++j)
{
Color = qRgb((qRed(srcArray[j])*(1-fade)+ qRed(dstArray[j])*fade),
(qGreen(srcArray[j])*(1-fade) + qGreen(dstArray[j])*fade),
(qBlue(srcArray[j])*(1-fade) + qBlue(dstArray[j])*fade));
rstImage.setPixel(i,j,Color);
}
}
srcImage = rstImage;
omp_set_lock(&my_lock);
repaint();
omp_unset_lock(&my_lock);
temp1 = fade;
fade = temp1 +0.01;
}
}
#pragma omp section
{
while(fade2 <=1){
for( m = 0; m != srcImage.width();++m)
{
for(k = 0; k != srcImage.height();++k)
{
Color2 = qRgb((qRed(srcArray[m][k])*fade+ qRed(dstArray[m][k])*(1-fade)),
(qGreen(srcArray[m][k])*fade + qGreen(dstArray[m][k])*(1-fade)),
(qBlue(srcArray[m][k])*fade + qBlue(dstArray[m][k])*(1-fade)));
rstImage2.setPixel(m,k,Color2);
}
}
dstImage = rstImage2;
omp_set_lock(&my_lock);
repaint();
omp_unset_lock(&my_lock);
temp2 = fade2;
fade2 = temp2 + 0.05;
}
}
}
两个线程计算分别要把图片画到屏幕上。但是第一个线程执行repaint后,第二个线程无法执行。。