我一直在实施这个小游戏想法,这是(不知何故?)类似于康威的生活游戏:

0)您有一个彩色点的矩阵(RGB值) 1)如果相邻的单元格的x值比Y较低,请在该单元格上放置y= 0 (其中x和y是红色的,green ||蓝色) 2)红节拍绿色节拍蓝拍红色

我现在正在做什么,它只是通过细胞进行的牢房,检查是否满足上述规则。但是,行为它不是我想要的,因为有时第一行上的细胞有优势在结束行中的优势。

可以多线程防止这一点(例如,启动两个线程,一个在第一个单元中发起一个,另一个在最后一个中)?请原谅我对并发的无知,但我觉得这是开始与之合作的好方法。

有帮助吗?

解决方案

我的猜测是您正在更新矩阵,而您应该复制矩阵的旧状态,更新一个新的,然后通过更新替换原始的轨道。 这样,你不会更新一些小区,然后在下一行上测试它们的值。 因此,它将是一个算法问题,与程序化无关(因此多线程无法帮助)。

其他提示

否。你的问题是一个固有的缺陷。您拥有的问题是您使用中间结果,即,在此更新中,一个单元格的更改会立即影响下一个单元格。它不应该。您应该创建一个新矩阵,将更改的值存储在那里,然后交换它们,以便加载新值。重复。

您将更好地调整算法以防止这一点。

依靠多线程来改变行为不是好事。实质上,这试图将竞争条件介绍到您的代码中。通常,在向算法添加多线程时,第一个优先级是<强>防止行为的任何变化。

通过尝试使用竞争条件来改变行为,您将使这是非常非确定性的,但不是以好方法。你会更好地尝试提出不同的解决方案(可能使用伪随机数发生器等),然后引入多线程以使其更快(希望不影响结果)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top