【发布时间】:2015-02-26 18:09:17
【问题描述】:
我正在尝试将现有的单线程洪水填充算法转换为多线程算法。
输入: - 二维位数组及其暗淡 - 填充应开始的 xy 坐标
输出: - 具有更新位的相同二维位数组
问题: - 当时只有 1 个线程可以写入数组中给定的 64 位(8x8 像素),也没有其他线程可以在写入时读取这个 64 位块
我已经开始使用队列方法和线程池,所以一旦线程完成它的工作,它就可以从队列中获取另一个任务。
您将如何组织符合“问题”声明的线程同步?
主要问题是如何为给定的内存块分配读/写储物柜?
【问题讨论】:
-
Flood fill 从来没有让我觉得适合多线程。下一步行动过于依赖先前的结果。祝你好运。
-
应该从多个坐标开始,还是从单个 (x,y) 坐标开始?
-
@didierc,只是单个 x,y。它应该快速填充到需要填充递归的许多点。
-
您可以从起点将区域划分为象限,并让 4 个线程工作,每个线程一个。
-
事实上,您可能应该重新考虑将新坐标推送到队列中的顺序,以便对坐标进行分组,以帮助线程不踩到彼此的脚趾.
标签: multithreading algorithm flood-fill