이때 멀티스레드를 이용하면 두 가지 문제를 모두 해결할 수 있습니다. 다음 코드를 봅시다.
bool isStillLoading; // 전역 변수 Thread1 { isStillLoading = true; while (isStillLoading) { FrameMove(); Render(); } } Thread2 { LoadScene(); LoadModel(); LoadTexture(); LoadAnimation(); LoadSound(); isStillLoading = false; }
Thread1에서는 게임 루프를 돕니다. 즉, 렌더링을 지속적으로 수행합니다.
Thread2에서는 게임에 필요한 데이터를 디스크에서 로딩합니다. 그리고 로딩이 끝나면 특정 변수를 변경합니다. Thread1에서는 이 변수가 변경될 때까지 로딩 화면을 반복해서 렌더링합니다.
이렇게 하면 동시에 두 가지 일을 하기 때문에 로딩이 진행되는 동안 제법 부드러운 애니메이션을 선사할 수 있습니다.
멀티스레드 프로그래밍이 유용한 다음 케이스를 봅시다.