因此,我编写了一个生成曼德布罗图像的程序。然后,我决定以一种使用指定数量的线程来加速它的方式编写它。这就是我想出的:
void mandelbrot_all(std::vector<std::vector<int>>& pixels, int X, int Y, int threadCount) {
using namespace std;
vector<thread> threads;
int numThreads = threadCount;
for(int i=0; i<numThreads; i++) {
threads.push_back(thread (mandelbrot_range, std::ref(pixels), i*X/numThreads, 0, X*(i+1)/numThreads, Y, X));
}
for(int i=0; i<numThreads; i++) {
threads[i].join();
}
}
其目的是将处理分成块并分别处理每个块。当我运行程序时,它需要一个数字作为参数,它将用作程序中用于该运行的线程数。不幸的是,对于任何数量的线程,我都会得到相似的时间。
有什么关于我缺少的 c++ 线程的东西吗?我是否必须添加一些东西或某种样板才能使线程同时运行?还是我制作线程的方式很愚蠢?
我试过在树莓派和我的四核笔记本电脑上运行这段代码,结果相同。
任何帮助,将不胜感激。