인프런 커뮤니티 질문&답변

G General님의 프로필 이미지
G General

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Completion Port 모델

Iocp 함수 관련 질문 드립니다!

작성

·

309

0

WSAGetOverlappedResult 함수의 4번째 매개변수인 fWaitAll 불리언값의 경우 기본적으로 false를 사용하지만, 하나만 깨우거나 전부 깨우거나 개별 설정을 할 수 있는데요.

복습하다 보니까 GetQueuedCompletionStatus의 경우 iocp핸들, recvLen포인터 같은것, 컴플리션키 포인터, overlapped포인터, 시간  을 매개변수로 받는데 여기는 fWaitAll을 설정하는 부분이 없더라구요. 

궁금한 점은 GetQueuedCompletionStatus는 내부적으로 fWaitAll을 false로 가지고 처리되는 함수인가요? 

검색해서 찾아보니 GetQueuedCompletionStatus 역시 IO Completion Queue에 처리결과가 삽입되는 순간 깨어나는 시스템이고 이게 Alertable Wait와는 조금 다른 매커니즘이라는 것 까지는 알겠는데 자세하게는 잘 모르겠어서 디폴트로 false인 fWaitAll 플래그를 가지고 처리되는건지 아닌지를 잘 모르겠습니다..ㅠ

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

https://www.slideshare.net/namhyeonuk90/iocp
IOCP 메커니즘 관련해서, 위 자료에 잘 요약되어 있으니 참고 바랍니다.
애당초 모든 애들을 깨울 이유가 전혀 없으므로 1개의 쓰레드만 깨웁니다.

G General님의 프로필 이미지
G General
질문자

와우 감사합니다 개념적으로 알기쉽게 정리되어있네요!! iocp 동작 원리 만 쳐도 나오는걸 계속 엉뚱한걸 찾고있었네요ㅠㅠ

G General님의 프로필 이미지
G General

작성한 질문수

질문하기