KoreanFoodie's Study

[C++ 게임 서버] 1-1. 멀티쓰레드 개론 본문

Game Dev/Game Server

[C++ 게임 서버] 1-1. 멀티쓰레드 개론

GoldGiver 2023. 7. 7. 17:41

Rookiss 님의 '[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버' 를 들으며 배운 내용을 정리하고 있습니다. 관심이 있으신 분은 꼭 한 번 들어보시기를 추천합니다!

[C++ 게임 서버] 1-1. 멀티쓰레드 개론

핵심 :

1. 멀티쓰레드 프로그래밍은 식당을 운영하는 것과 비슷하다. 테이블을 프로세스, 테이블에서 일하는 직원을 쓰레드, 영혼을 코어라고 생각하면 편하다.

2. 쓰레드는 힙 영역을 공유하지만, 각각의 정보를 스택에 저장한다. 따라서 힙 영역에 접근할 때는 Race Condition 이 발생할 수 있다.

멀티쓰레드 프로그래밍은 식당을 운영하는 것과 비슷하다. 테이블을 프로그램, 직원을 쓰레드, 영혼을 CPU 코어라고 생각하자.

그럼 영혼이 직원에게 들어가야 프로그램이 돌아갈 것이다. 이제 우리가 해야 할 일은, 영혼을 직원에게 어떻게 분배해야 좋을지 구조를 설계하고 코드를 짜는 것이다!

 

실제로 위의 스샷처럼, CPU 코어를 적절히 배분하면서 생기는 문제를 잘 해결하기 위해, 멀티 쓰레드 환경에서 어떻게 프로그래밍을 하면 좋을지 별도의 학습이 필요하다.

대표적으로는 Lock 과 관련된 규칙을 어떻게 적용할 것인지 등등이 있겠다. 😉

 

쓰레드는 힙과 데이터 영역을 공유한다. 데이터 영역은 일반적으로 static 으로 선언되는 변수들이 이에 해당한다.

쓰레드는 각각 별도로 스택 메모리를 사용하는데, 공유하는 힙/데이터 영역에 접근할 때 Race Condition 이 발생할 수 있으므로 이를 주의해야 한다!😅😅

Comments