J'ai 2 threads dans mon application, un thread de mise à jour de jeu et de rendu/IO/thread principal. Mon thread de mise à jour met à jour l'état du jeu et le thread de rendu restitue la scène en fonction des valeurs mises à jour des modèles d'état du jeu et de quelques autres variables stockées dans un objet (gameEngine).Qu'est-ce qui ne va pas avec mon bloc @ synchronisé?
Le rendu fil est exécuté alors que le fil de jeu est mise à jour encore, ce qui est un problème, il me semble que la solution est d'utiliser @synchronized comme ceci:
@synchronized(gameEngine)
{
[gameEngine update];
nextUpdate = now + GAME_UPDATE_INTERVAL;
gameEngine.lastGameUpdateInterval = now - lastUpdate;
gameEngine.lastGameUpdateTime = now;
lastUpdate = now;
}
Mais le fil rend les accès encore l'objet gameEngine entre -update
et les 3 dernières lignes du bloc. Pourquoi est-ce?
Veuillez également indiquer le code que vous prévoyez d'exécuter sur le thread de rendu. Est-il également à l'intérieur d'un bloc @synchronize sur l'objet gameEngine identique? – Ken