ݺߣ

ݺߣShare a Scribd company logo
게임 서버 프로그래밍
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 사용

More Related Content

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

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