태크놀로지

멀티쓰레드 프로그래밍은 어디서 사용되고 있는가? 본문

멀티코어

멀티쓰레드 프로그래밍은 어디서 사용되고 있는가?

원택 2020. 9. 13. 21:20

실제 멀티쓰레드 프로그래밍은 어디서 사용되고 있는가?

  • 과학기술계산
  • 멀티미디어
    • 동영상 인코딩, 디코딩
    • 멀티쓰레드 구현이 매우 쉬움 (독립된 키프레임)
  • 게임

 

멀티쓰레드 프로그래밍의 종류

  • Heterogeneous multithread
    • 쓰레드마다 하는 역할이 다르다. (Renderer 쓰레드, AI 쓰레드, 오디오 쓰레드 등등)
    • 각 쓰레드마다 다른 파트를 실행
    • 쓰레드간의 Load Balancing이 힘들다. (Renderer 쓰레드가 하는일을 Game 쓰레드한테 할당못함)
    • 병렬성이 제한된다.
  • Homogeneous multithread
    • 쓰레드가 같은역할을 한다. ( worker 쓰레드 같은경우 노는 쓰레드가 없다.)
    • Data / Event driven 프로그래밍 ( ※Event란 이미 발생한 현상)
    • 모든 쓰레드는 Symmetric 하다.
      • 역할 구분이 없고 가능한 순서대로 인풋을 처리한다.
    • 제한없는 병렬성, 자동적인 Load Balancing
    • 작업분배 큐를 비롯한 일반적인 병렬 자료구조 필요

 

MMORPG Game Server

MMORPG 게임 서버의 구현

한국산업기술대학교 멀티코어 프로그래밍 정내훈 교수님 ppt 참고

  • 윈도우에서 제공하는 멀티쓰레드 + Network I/O api인 IOCP 사용
  • Time Consuming 작업 및 블로킹 작업들의 재배치
  • Homogeneous Multithreading
    • Worker thread의 풀을 사용
    • 네트워크 데이터 처리 뿐만 아니라 AI루틴도 Worke thread에서 처리
  • 멀티쓰레드 트릭 : 데이터베이스 쿼리
    • 문제: 데이터베이스 쿼리는 쓰레드의 블로킹을 초래
    • 해결: 블로킹 전용 쓰레드를 따로 두어서, 작업 전달

한국산업기술대학교 멀티코어프로그래밍 정내훈교수님 수업 ppt 참고

(별도의 쓰레드가 DB에서 정보를 꺼냄 호모지니어스 멀티쓰레딩을 위해선 워커쓰레드는 절대 멈추지 않음.)

  • 멀티쓰레드 트릭 : NPC AI
    • 문제: NPC가 너무 많다.
    • 해결 Timer Thread를 사용하여, 활성화된 NPC의 이벤트만 처리

 

MMORPG 게임서버의 특징

  • Worst Case Tuning
    • 평상시의 cpu 낭비 ok, 최대 부하일때 잘 버티는 프로그램이 최고
  • 컨테이너 자료구조를 사용한 객체간 동기화
    • 큐, 우선순위 큐, set
    • 커스텀 자료구조
      • 1 write / multi reader queue
      • multi write / 1 reader priority queue
      • set copy method

출처

한국산업기술대학교 게임공학부 정내훈 교수님 강의 - 멀티코어 프로그래밍