如何将Mandelbrot的每个像素计算划分为不同的节点?

在此处输入图像描述

我的问题是我应该使用什么数据结构将工作分配给每个线程并从中获取计算值。 在我看来,第一件事是填充矢量[0] ..矢量[63999](对于800×800像素),其结构包含x,y和iterate_value。 将这些向量传递给每个节点 – >然后将给定向量进一步划分到每个核心(Os-thread) – >然后将给定向量进一步划分到每个线程。 有没有其他可能的方式来发送和接收值? 如果我以矢量方式进行,我应该通过传递值传递矢量还是通过引用传递,在这种情况下哪一个更好?

mandelbrot集的不同点需要不同的时间来计算(边缘附近的点更昂贵),因此为每个工作人员提供偶数个像素将使其中一些像素完成得更快。

将图像分成小矩形(图块)。 使用multithreading队列创建工作列表,并使用切片填充它。 每个工作线程循环,从工作列表中选取一个磁贴并提交结果,直到工作列表为空。

像素间隔均匀,为什么要为每个像素发送坐标? 只需告诉每个节点左下角像素的x和y坐标,像素之间的间距以及像素数。 这样,您的工作单位规格是一个小的常量。

就更大的设计而言,没有必要拥有更多的工作线程而不是物理内核。 每个核心多个线程的上下文切换只会降低性能。