这个场景线程在libgdx中是否安全?

时间:2013-10-29 13:28:27

标签: multithreading libgdx

我正在开发一个libgdx游戏,我的部分场景就是这个

  

1:我有5个方格,我每10秒填一次,一旦它们都满了[50秒]什么都没做。我将它们填充为红色,这是默认的蓝色。

     

2:一个有操作的按钮,其中一个操作是它将填充其中一个方块(颜色从红色变为蓝色。)

这是设置

  

行为(浮点)------- ---呼叫GT&; updateSquare

     

updateSquare --->检查自上次以来是否已经过10秒,如果是,则抓住第一个可用的方块并更改颜色。

     

buttonListener ---->将红色可用的第一个方块的颜色更改为蓝色。

现在我的问题是它是否是线程安全的?这些线程会相互重叠吗?

  

假设我的前两个方格是红色,其余是蓝色,所以第一个可用的是第三个,所以如果第一个 updateSquare 被调用,而不是我点击按钮然后两个新的正方形将变为蓝色,总共四个蓝色正方形。

     

但是如果两者同时发生(updateSquare和buttonClick),那么它们都只会产生第3个方块蓝色。

这种情况(重叠)是否可能?我的朋友不是,我也没有遇到这样的问题,但我不知道它是否是线程安全的?

1 个答案:

答案 0 :(得分:4)

请参阅this link

  

在渲染线程上调用ApplicationListener.render()之前调度事件。

这意味着你实际上没有任何多线程。在一帧期间收集所有事件(例如您的buttonListener接收的事件)。并且它们会在下一次渲染调用之前发送给您的处理程序。

这完全是确定性的,没有重叠。