我在我的應用程序中有2個線程,一個遊戲更新線程和渲染/ IO /主線程。 我的更新線程更新遊戲狀態,並且呈現線程根據遊戲狀態模型的更新值以及存儲在對象(gameEngine)中的一些其他變量呈現場景。我的@synchronized塊有什麼問題?
渲染線程而遊戲線程仍在更新,這是一個問題得到執行,所以在我看來,解決辦法是使用@Synchronized這樣的:
@synchronized(gameEngine)
{
[gameEngine update];
nextUpdate = now + GAME_UPDATE_INTERVAL;
gameEngine.lastGameUpdateInterval = now - lastUpdate;
gameEngine.lastGameUpdateTime = now;
lastUpdate = now;
}
但渲染線程仍然訪問-update
與該塊的最後3行之間的gameEngine對象。爲什麼是這樣?
請顯示您期望在渲染線程上執行的代碼。它是否也在同一個gameEngine對象的@synchronize塊中? – Ken 2010-05-16 19:09:37