我的应用程序中有 2 个线程,一个游戏更新线程和渲染/IO/主线程。我的更新线程更新游戏状态,渲染线程根据游戏状态模型的更新值和存储在对象 (gameEngine) 中的一些其他变量来渲染场景。
渲染线程在游戏线程仍在更新时执行,这是一个问题,所以在我看来解决方案是像这样使用@synchronized:
@synchronized(gameEngine)
{
[gameEngine update];
nextUpdate = now + GAME_UPDATE_INTERVAL;
gameEngine.lastGameUpdateInterval = now - lastUpdate;
gameEngine.lastGameUpdateTime = now;
lastUpdate = now;
}
-update
但是渲染线程仍然在块的最后 3 行之间访问 gameEngine 对象。为什么是这样?