KoreanFoodie's Study
[C++ 게임 서버] 1-1. 멀티쓰레드 개론 본문
[C++ 게임 서버] 1-1. 멀티쓰레드 개론
핵심 :
1. 멀티쓰레드 프로그래밍은 식당을 운영하는 것과 비슷하다. 테이블을 프로세스, 테이블에서 일하는 직원을 쓰레드, 영혼을 코어라고 생각하면 편하다.
2. 쓰레드는 힙 영역을 공유하지만, 각각의 정보를 스택에 저장한다. 따라서 힙 영역에 접근할 때는 Race Condition 이 발생할 수 있다.
멀티쓰레드 프로그래밍은 식당을 운영하는 것과 비슷하다. 테이블을 프로그램, 직원을 쓰레드, 영혼을 CPU 코어라고 생각하자.
그럼 영혼이 직원에게 들어가야 프로그램이 돌아갈 것이다. 이제 우리가 해야 할 일은, 영혼을 직원에게 어떻게 분배해야 좋을지 구조를 설계하고 코드를 짜는 것이다!
실제로 위의 스샷처럼, CPU 코어를 적절히 배분하면서 생기는 문제를 잘 해결하기 위해, 멀티 쓰레드 환경에서 어떻게 프로그래밍을 하면 좋을지 별도의 학습이 필요하다.
대표적으로는 Lock 과 관련된 규칙을 어떻게 적용할 것인지 등등이 있겠다. 😉
쓰레드는 힙과 데이터 영역을 공유한다. 데이터 영역은 일반적으로 static 으로 선언되는 변수들이 이에 해당한다.
쓰레드는 각각 별도로 스택 메모리를 사용하는데, 공유하는 힙/데이터 영역에 접근할 때 Race Condition 이 발생할 수 있으므로 이를 주의해야 한다!😅😅
'Game Dev > Game Server' 카테고리의 다른 글
[C++ 게임 서버] 1-3. atomic (원자적) 변수와 연산 (0) | 2023.07.10 |
---|---|
[C++ 게임 서버] 1-2. 쓰레드 생성 (0) | 2023.07.07 |
Boost.Asio 의 개념 및 요약 정리 (0) | 2022.11.01 |
IOCP의 개념 및 요약 정리 (0) | 2022.11.01 |
Message Pump 의 동작 방식 이해와 응용 (0) | 2022.10.20 |
Comments