我正在制作一个 2 人视频游戏,并且对手的位置在线程上得到更新,因为它有一个持续监听的套接字。我想分享的是位置和旋转。
因为它是一个视频游戏,我不希望主线程被阻塞(或者只是可能的最短时间),我不希望性能受到影响。因此,从我所看到的分享这些信息来看,正常的做法是
class sharedinfo
{
public synchronized read();
public synchronized write();
}
但这会阻塞主线程中的读取(与绘制视频游戏相同),直到写入三个值(或者将来写入更多信息),而且我读过同步非常昂贵(也是重要的是要说这个游戏也适用于android,所以性能非常重要)。
但我在想,也许在 AtomicReference 中包含 sharedInfo 并消除 synchronized 会使其更有效,因为它只会在引用本身被更新时停止(写入不存在,我会创建一个新对象并将其放在atomicreference),他们还说 atomic* 使用硬件操作并且比同步更有效。
你怎么看?