遍历QList <class>时,“ openmp parallel for”崩溃

时间:2018-10-01 15:53:55

标签: thread-safety openmp qlist

我有一个“ MyFITS”类,其中包含来自带有检测器“芯片”的相机的2D图像。我有一个QList,其中包含指向该摄像机中许多图像的指针。现在我想并行化一个for循环:

#pragma omp parallel for
for (int chip=0; chip<n; ++chip) {
    QStringList filenames = getFilenames(chip);
    QList<MyFITS*> images;

    // Read in all images from detector 'chip'
    for (auto &it : filenames) {
        MyFITS *image = new MyFITS(it);
        images << image;
    }

    do_some_calculations(images);

    for (auto &it : images) delete it;
}

在没有#pragma指令的情况下可以正常工作。 但是,使用#pragma指令,它将在第二个for循环MyFITS *image = new MyFITS(it)的第一行中崩溃。每个线程只能输入一次。

我不明白。在for循环中声明的所有变量不是私有的吗?这段代码的哪一部分不是线程安全的?我必须忽略一些非常简单的事情。

谢谢

Mischa Schirmer

0 个答案:

没有答案