1.11 멀티스레드 게임 서버
멀티스레드로 서버를 개발하는 경우는 주로 다음과 같습니다.
1. 서버 프로세스를 많이 띄우기 곤란할 때. 예를 들어 프로세스당 로딩해야 하는 게임 정보(맵 데이터 등)의 용량이 매우 클 때(특히 MMO 게임 서버)
2. 서버 한 대의 프로세스가 여러 CPU의 연산량을 동원해야 할 만큼 많은 연산을 할 때
3. 코루틴이나 비동기 함수를 쓸 수 없고 디바이스 타임이 발생할 때
4. 서버 인스턴스를 서버 기기당 하나만 두어야 할 때
5. 서로 다른 방8이 같은 메모리 공간을 액세스해야 할 때
멀티스레드 게임 서버는 잠금 범위를 설정해 주어야 하는데, 보통은 방 단위로 잠금 범위를 설정하는 것이 적정합니다.
▲ 그림 1-43 한 프로세스에 멀티스레드로 작동하는 게임 서버의 모델
8 플레이어가 한 명 이상 같이 모여서 플레이하는 공간 1개를 방(room)이라고 합니다. 게임방 혹은 멀티플레이어 세션(multiplayer session)이라고도 합니다.