我和一个朋友正在制作一个游戏引擎,其中两个 AI 正在互相争斗。我们正在尝试以这样一种方式设置游戏引擎线程,即 AI 线程无法执行诸如减慢游戏速度或随意摧毁任何单位等操作。
我们遇到的问题是我们需要在游戏引擎和 AI 之间共享数据。直到现在我们使用synchronize
,但是 AI 可以阻止变量并且游戏引擎无法继续进行。或者 AI 可以选择不同步并导致游戏崩溃,这也不是我们想要的。
我们一直在研究 Lock 的实现,但这似乎假设 AI 在使用之前会检查变量是否被锁定,而糟糕的 AI 当然无法做到这一点。
如果我们的数据被锁定,我们想做的是查看一个可预测的时间。如果它被锁定,我们将取消 AI 的资格。否则我们继续游戏。同步的问题是,继续是默认的,游戏引擎将等到变量被解锁并且它可能挂起。
问题
如何锁定变量/共享数据,以便您可以查看变量是否已锁定并强制锁定?还是有不涉及锁定的解决方案?