멀티쓰레드란
멀티쓰레드란 단순히 하나의 프로그램에 여러 개의 쓰레드를 갖고 있는 것을 의미한다.
기본적으로 하나의 CPU 코어는 하나의 쓰레드만을 실행할 수 있다. 만약 하나의 CPU코어가 있다고 가정할 때 여러 프로그램에 쓰레드를 배치하고 동시에 실행시킨다면 어떻게 될까?
하나의 CPU 코어가 쓰레드를 빠르게 옮겨다니며 실행될 것이다.
Rookiss님의 강의에서는 고급 레스토랑에 비유를 했다.
고급 레스토랑에는 계산대, 주방, 테이블과 여러 로봇 직원이 있을 수 있는데 이는 프로세스(프로그램)에 비유할 수 있으며, 프로그램 내에는 DB, 클라이언트 세션, 게임 로직 등 다양한 구성이 있으며 로봇 직원은 쓰레드에 비유할 수 있다.
쓰레드들은 Heap 영역(new) 와 데이터 영역 (static 변수) 은 공유해서 사용한다.
Stack 영역은 각각 배정받게 되는데, 이는 공유 영역에서 쓰레드들끼리 침범하는(경합) 문제가 생겨 프로그램의 오류가 생길 가능성을 시사한다.
해당 내용은 Rookiss 님의 인프런 강좌 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버 를 요약, 작성하였습니다.
'네트워크 > 게임 서버' 카테고리의 다른 글
Thread, ThreadPool, Task 개념 (0) | 2024.12.09 |
---|