为什么OpenCV项目的多线程比单线程慢?

时间:2016-11-22 20:36:37

标签: c++ multithreading opencv pthreads loadimage

我已经编写了一些代码,用OpenCV加载1025个图像来处理它们;这些代码有两个版本:  单线程和多线程;问题是代码的结果让我很困惑;因为单线程版本比多线程更快。

你怎么看待它?怎么了?

我的代码在下面。

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include "ctpl.h"

using namespace std;
using namespace cv;

#define threaded

void loadImage(int id, int param0) {
    stringstream stream;
    stream << "/home/me/Desktop/Pics/pic (" << param0 << ").jpg";
    Mat x = imread(stream.str(), IMREAD_REDUCED_COLOR_8);
}

int main() {
#ifdef threaded
    ctpl::thread_pool p(8);
    for (int i = 1; i <= 1025; i++) {
        p.push(loadImage,i);
    }
//    for (int i = 0; i < 1025; ++i) {
//        pthread_join(threads[i], NULL);
//    }
#else
    for (int i = 1; i <= 1025; i++) {
        stringstream stream;
        stream << "/home/me/Desktop/Pics/pic (" << i << ").jpg";
        Mat x = imread(stream.str(), IMREAD_REDUCED_COLOR_8);
    }
#endif
    return 0;
}

0 个答案:

没有答案