私は 2 プレーヤーのビデオゲームを作成しています。対戦相手の位置はスレッドで更新されます。これは、継続的にリッスンしているソケットがあるためです。共有したいのは、位置と回転です。
これはビデオゲームであるため、メイン スレッドをブロックしたり (または可能な限り最小限の時間にしたり)、パフォーマンスに影響を与えたりしたくありません。したがって、この情報を共有するために私が見たことから、通常行うことは次のようになります
class sharedinfo
{
public synchronized read();
public synchronized write();
}
しかし、これは3つの値(または将来さらに多くの情報が書き込まれる)が書き込まれるまで、メインスレッド(ビデオゲームを描画するのと同じ)での読み取りをブロックします。このゲームは Android 用でもあるため、パフォーマンスが非常に重要であると言うことが重要です)。
しかし、参照自体が更新されているときにのみ停止するため、AtomicReference 内に sharedInfo を配置し、synchronized を削除すると、より効率的になると考えていました (書き込みが存在しないため、新しいオブジェクトを作成して、また、atomic* はハードウェア操作を使用し、同期よりも効率的であるとも述べています。
どう思いますか?