반응형
- Overlapped IO
- WSASend, WSARecv, GetQueuedCompletionStatus 함수의 인자에 모두 Overlapped 구조체가 넘어 온다.
- 왜 필요한가? 넌블러킹, 비동기 IO를 처리가기 위한 IO 방법이다.
- 여러 IO가 중첩 되게 처리 한다고 해서 Overlapped라는 이름을 붙였다.
- 또 다른 의미로는 작업과 IO가 동시에 진행된다는 의미
- 장점
- 넌블럭 IO
- 버퍼핑 오버 헤드 감소 : OS에 의해사용자가 지정한 버퍼에다 바로 read/write 한다.
- IOCP(IO Completion Port)
- 재사용이 가능한 쓰레드 풀 유지
- 스마트한 워크 쓰레드 관리
- 커널의 IO 쓰레드에 제어를 위임하여 IO 완료를 통보 받아 생성한 워커 쓰레드에서 로직 처리
- 즉, 사용자는 IO Completion만을 기다려 처리.
- Wating Thread Queue
- LIFO 구조로 관리 합니다. 성능 이슈로 빈번히 호출 되는 쓰레드가 재사용 된다는 뜻입니다.
- Completion Key
- Accept시 CreateCompletionPort 호출하여 소켓과 어떤 연결인지에 대한 정보(Completion Key)를 맵핑합니다.
- 이후 GetQueuedCompletionStatus를 호출하여 IO Completion이 완료된 정보를 큐에서 가져옵니다.
- 이때 누구로 부터 온 데이터인지를 Completion Key로 정의한 내용을 참조해서 알수 있습니다.
'게임 개발 > 게임 서버 프로그래밍' 카테고리의 다른 글
RPG 게임 이동 동기화 스트레스 테스트 봇 (0) | 2021.11.02 |
---|---|
TCP 3/4 Way-handshake (0) | 2021.08.30 |
C++ 프로그래머가 알아야할 C# 기능 요약 (0) | 2019.11.05 |
네비게이션 메쉬 + A* (Navigation Mesh + AStar) (1) | 2019.11.03 |