ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 멀티쓰레드 개론
    게임서버/멀티쓰레드 프로그래밍 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
Designed by Tistory.