더북(TheBook)

이때 멀티스레드를 이용하면 두 가지 문제를 모두 해결할 수 있습니다. 다음 코드를 봅시다.

bool isStillLoading; // 전역 변수
 
Thread1
{
  isStillLoading = true;
  while (isStillLoading)
  {
      FrameMove();
      Render();
  }
}
 
Thread2
{
  LoadScene();
  LoadModel();
  LoadTexture();
  LoadAnimation();
  LoadSound();
 
  isStillLoading = false;
}

Thread1에서는 게임 루프를 돕니다. 즉, 렌더링을 지속적으로 수행합니다.

Thread2에서는 게임에 필요한 데이터를 디스크에서 로딩합니다. 그리고 로딩이 끝나면 특정 변수를 변경합니다. Thread1에서는 이 변수가 변경될 때까지 로딩 화면을 반복해서 렌더링합니다.

이렇게 하면 동시에 두 가지 일을 하기 때문에 로딩이 진행되는 동안 제법 부드러운 애니메이션을 선사할 수 있습니다.

멀티스레드 프로그래밍이 유용한 다음 케이스를 봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.