게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
TRANSCRIPT
게임서버프로그래밍
Multi-thread
NHN NEXT
LOCK
• Deadlock– 어떻게 감지할 수 있을까?
• lock-hierarchy를 사용한다면 어떻게?
• (구현과제 LockOrderChecker 참고)
• READ-WRITE LOCK– Windows의 SRWLock을 직접 구현한다면 어떻게?
• (구현과제 FastSpinlock의 Read/Write Lock 구현 참고)
Thread Local Storage
• 이것은 무엇이고 어떻게 사용?
• 어디에서 사용하면 될까? – 사용예를 들어보기
Lock-free 알고리즘
• Lock-free 알고리즘– 이것은 무엇인가?
– 직접 구현하기 어려운 이유는?
– 그러면 어떻게 사용하면 좋을까?
– ABA 문제란?
• 왜 이것이 필요하고 어디에서 쓰일 수 있을까?– 적합한 사용처 예시는?
• 참고자료– 참고 자료 게시판에 올려놓은 멀티스레드 프로그래밍 자료
참고 링크
• 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시 보너스 점수 부여
끝
• 구현과제– https://github.com/zeliard/GSP/tree/master/Homework4
• 구현과제 (외전)– IOCP를 사용하여 Dummy Client 구현
• 다른 프로젝트로 분리
• perf_client처럼 특정 시간 동안 멀티 세션을 맺어서
• send/recv 양 측정 가능하게, ConnectEx 사용