Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- multi-core
- 유니크포인터
- 복사생성자
- 게임공학과
- Multithread
- 스마트포인터
- 멀티쓰레드
- observer pattern
- 프레임워크
- 메모리관리
- 옵저버
- 옵저버 패턴
- random access
- 디자인패턴
- material
- MultiCore
- 멀티코어 프로그래밍
- C
- 쓰레드
- Design Pattern
- thread
- c++
- 한국산업기술대학교
- stl
- Unreal
- 멀티코어
- vector
- Atomic
- sequential
- EFFECTIVE C++
Archives
- Today
- Total
태크놀로지
멀티쓰레드 프로그래밍은 어디서 사용되고 있는가? 본문
실제 멀티쓰레드 프로그래밍은 어디서 사용되고 있는가?
- 과학기술계산
- 멀티미디어
- 동영상 인코딩, 디코딩
- 멀티쓰레드 구현이 매우 쉬움 (독립된 키프레임)
- 게임
멀티쓰레드 프로그래밍의 종류
- Heterogeneous multithread
- 쓰레드마다 하는 역할이 다르다. (Renderer 쓰레드, AI 쓰레드, 오디오 쓰레드 등등)
- 각 쓰레드마다 다른 파트를 실행
- 쓰레드간의 Load Balancing이 힘들다. (Renderer 쓰레드가 하는일을 Game 쓰레드한테 할당못함)
- 병렬성이 제한된다.
- Homogeneous multithread
- 쓰레드가 같은역할을 한다. ( worker 쓰레드 같은경우 노는 쓰레드가 없다.)
- Data / Event driven 프로그래밍 ( ※Event란 이미 발생한 현상)
- 모든 쓰레드는 Symmetric 하다.
- 역할 구분이 없고 가능한 순서대로 인풋을 처리한다.
- 제한없는 병렬성, 자동적인 Load Balancing
- 작업분배 큐를 비롯한 일반적인 병렬 자료구조 필요
MMORPG Game Server
MMORPG 게임 서버의 구현
- 윈도우에서 제공하는 멀티쓰레드 + Network I/O api인 IOCP 사용
- Time Consuming 작업 및 블로킹 작업들의 재배치
- Homogeneous Multithreading
- Worker thread의 풀을 사용
- 네트워크 데이터 처리 뿐만 아니라 AI루틴도 Worke thread에서 처리
- 멀티쓰레드 트릭 : 데이터베이스 쿼리
- 문제: 데이터베이스 쿼리는 쓰레드의 블로킹을 초래
- 해결: 블로킹 전용 쓰레드를 따로 두어서, 작업 전달
(별도의 쓰레드가 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
출처
한국산업기술대학교 게임공학부 정내훈 교수님 강의 - 멀티코어 프로그래밍
'멀티코어' 카테고리의 다른 글
멀티쓰레드 프로그램 작성시 주의해야할점 - CPU (0) | 2020.09.17 |
---|---|
멀티쓰레드 프로그램 작성시 주의해야할점 - 컴파일러 (0) | 2020.09.16 |
멀티쓰레드 프로그래밍으로 덧셈프로그램 만들기 (이외 방법) (0) | 2020.09.13 |
멀티쓰레드 프로그래밍으로 덧셈프로그램 만들기 (0) | 2020.09.08 |
멀티코어 하드웨어 소개 (0) | 2020.09.04 |