-
멀티쓰레드 개론게임서버/멀티쓰레드 프로그래밍 2022. 3. 9. 12:39
멀티쓰레드 비유
고급 레스토랑 프로세스(프로그램) 로봇 직원 쓰레드 영혼 CPU코어 고급 레스토랑에서 영혼은 로봇 직원을 움직인다.
= 프로그램에서 CPU코어는 쓰레드를 움직인다.
하나의 영혼은 한개의 로봇밖에 조종할 수 없다
= 하나의 CPU코어는 한 개의 쓰레드만 실행할 수 있다.
하나의 영혼으로 다수의 로봇 직원을 움직이려면 영혼이 빠른 속도로 로봇의 몸을 갈아타면서 로봇을 조종하면 동시에 여러개가 움직이는 것처럼 보인다.
= 하나의 CPU코어가 다수의 쓰레드를 움직이려면 CPU코어가 빠른 속도로 쓰레드를 번갈아가면서 실행하면 된다.
로봇 직원에 우선순위를 부여하여 중요한 로봇직원에는 영혼이 더 많이 들어간다.
= 많은 일을 하는 쓰레드에는 CPU코어가 실행하는 빈도를 더 높인다(스케줄링의 개념)
우선순위가 낮은 로봇은 영혼이 잘 안들어가는 문제점이 생긴다.
= 우선순위가 낮은 쓰레드는 실행이 잘 안되는 문제점이 생긴다.(기아현상의 개념)
기아현상을 해결하기 위해서는 CPU코어의 숫자를 늘리면된다.
영혼이 로봇의 몸에 빙의하는 것은 부담이 많이 된다.
= CPU코어가 쓰레드 옮기면서 실행하는 것에는 성능의 부담이 된다.
쓰레드가 무작정 많은 것이 아닌 CPU코어의 개수만큼 쓰레드가 있는 것이 성능적인 면에서 가장 이상적이다.
쓰레드가 메모리를 사용할 때 heap영역은 공유하여 사용하지만 스택영역은 각자 사용한다.
멀티쓰레드의 문제점.
많은 일들을 쓰레드가 나눠서 하면 분명 더 빠른속도로 작업을 처리할 수 있지만 멀티쓰레드를 제대로 다루지 못하면
한 가지 작업에 모든 쓰레드가 동시에 몰려들어서 제대로 작동하지 못하는 문제점이 발생할 수 있다.
따라서, 우리가 이러한 문제점 등을 방지하기 위해서 쓰레드를 잘 관리해줘야한다.
'게임서버 > 멀티쓰레드 프로그래밍' 카테고리의 다른 글
Interlocked (0) 2022.03.10 메모리 베리어 (0) 2022.03.10 캐시 이론 (0) 2022.03.09 컴파일러 최적화 (0) 2022.03.09 쓰레드 (0) 2022.03.09