게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

6
게임 서버 프로그래밍 Multi-thread NHN NEXT

Upload: seungmo-koo

Post on 22-Jul-2015

346 views

Category:

Software


10 download

TRANSCRIPT

Page 1: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

게임서버프로그래밍

Multi-thread

NHN NEXT

Page 2: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

LOCK

• Deadlock– 어떻게 감지할 수 있을까?

• lock-hierarchy를 사용한다면 어떻게?

• (구현과제 LockOrderChecker 참고)

• READ-WRITE LOCK– Windows의 SRWLock을 직접 구현한다면 어떻게?

• (구현과제 FastSpinlock의 Read/Write Lock 구현 참고)

Page 3: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

Thread Local Storage

• 이것은 무엇이고 어떻게 사용?

• 어디에서 사용하면 될까? – 사용예를 들어보기

Page 4: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

Lock-free 알고리즘

• Lock-free 알고리즘– 이것은 무엇인가?

– 직접 구현하기 어려운 이유는?

– 그러면 어떻게 사용하면 좋을까?

– ABA 문제란?

• 왜 이것이 필요하고 어디에서 쓰일 수 있을까?– 적합한 사용처 예시는?

• 참고자료– 참고 자료 게시판에 올려놓은 멀티스레드 프로그래밍 자료

Page 5: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

참고 링크

• Concurrency In Action– http://www.slideshare.net/jinuskr/concurrency-in-action-

chapter-5

– http://www.slideshare.net/jinuskr/concurrency-in-action-chapter-7

• 멀티스레드 프로그래밍이 왜 이리 힘드나요?– http://www.slideshare.net/zzapuno/ndc2014-2

• Lock-free 자료구조 사용예– https://github.com/zeliard/Dispatcher

• 구현 과제에 도움이 될 수 있음, 과제와 별개로도 이해하기를 추천

• bind_version 브랜치의 버전 버그 수정후 pull-request시 보너스 점수 부여

Page 6: 게임서버프로그래밍 #4 - 멀티스레드 프로그래밍

• 구현과제– https://github.com/zeliard/GSP/tree/master/Homework4

• 구현과제 (외전)– IOCP를 사용하여 Dummy Client 구현

• 다른 프로젝트로 분리

• perf_client처럼 특정 시간 동안 멀티 세션을 맺어서

• send/recv 양 측정 가능하게, ConnectEx 사용