내 응용 프로그램에 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