진짜 문제는 무엇입니까?
그것은 디자인의 문제,하지만 당신은 여러 가지 이유로, 스레드가 필요합니다
: 당신이 일정한 프레임 속도를 원하는
- , 이것은 표시 전용 스레드를 의미하며, 대부분의 작업을 수행해야합니다 그래픽 카드는 요즘에도 여전히 있지만
- 당신은 입출력에 반응하기를 원한다. 다른 스레드이다. 실제로 대부분의 IO는 전용 스레드를 필요로한다. 키보드 + 마우스를 하나로 묶을 수 있지만 네트워킹에는 두 가지가 필요할 것이다. 보내려면 하나,받는 사람은 하나)
- 상태를 업데이트하는 등 여러 가지 스레드 (적어도 하나)를 원할 것입니다. ... 마지막으로
- , 당신은 아마 그것은 크게 다르지 않다 일부 대기열을 담당 할 것이다 그들 모두를 지배하는 스레드 (안 반지, 스레드), 및 파견 이벤트
을해야합니다 당신이 그것에 대해 생각하는 모델 - 뷰 - 컨트롤러 모델은, 당신은 단지
일반적으로 입력/출력에 다른 구성 요소를 추가,이 다음과 같이 실행합니다
- 사용자가 마우스를 클릭, 마우스 수신기 스레드 이벤트를 생성합니다 (MouseClicked 같은 위치에)
- 컨트롤러 스레드는 이벤트를 수신하여 게임의 상태를 업데이트하는 "모델"스레드로 보냅니다 (동작 시작, 등 ...). 긴 동작 인 경우 컨트롤러가 더 좋을 것입니다
- 보기 스레드는 디스플레이를 담당하고 표시 할 버퍼를 주기적으로 변경하며, 백그라운드에서 실행되는 계산과는 독립적으로 작동합니다. 따라서 스레드는 스레드 풀 (pool) 부분적으로 업데이트 된 상태가 아닌 일관된 상태를 보려면 동기화 (잠금)가 필요합니다.
나는 그것이 매우 옳고 (몇 가지 방법이 있습니다) 복잡하다는 것을 추가했습니다. 너가 너무 많은 실을 추가하면 너는 너의 발 아래 기계가 무너질 것이고, 교착 상태, 라이브 록, 기아 등등의 가능성이있다.
너는 무언가를 빨리 달성하고 싶으면,기구를 얻으 십시요 : Ogre은이다 좋은 오픈 소스 그래픽 라이브러리 예를 들어. 그렇지 않으면 게임 프로그래밍에 대한 리소스가 있습니다.
아니요, 지원하지 않으므로 진행 중입니다. 감사. –
모든 게임 사이클 동안 스레드를 생성하고 종료하는 것은 좋은 생각이 아닙니다. – casablanca