인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

essenger M님의 프로필 이미지
essenger M

작성한 질문수

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

Overlapped I/O에서 APC 큐에 일감을 넣어주는 부분에서 궁금한점

작성

·

224

0

IOCP 는 각각의 I/O의 결과가 큰 공용 바구니인 Completion Port에 담겨 Recv,Send,Connect,Accept,Disconnect 를 각각 의 사과?라고 가정을하면 각각의 쓰레드들이 서로 바구니에 있는 사과들을 막 가져가면서 먹고  다 먹으면  또 바구니에 있는 다른 사과를 찾아서 먹는 식으로 이해를 해보고 있습니다. 이런 관점에서는 OS가 IO가 완료되면 그 결과(5종류의 사과들)를 Completion port에 넣어준다는게 이해가 되는데 

Overlapped 모델은 쓰레드마다 별도로 바구니(APC 큐)를 가지고 있고  그러면 OS가 I/O 결과(5개의 사과들)들을 어떤 쓰레드 APC큐에 넣어주는것인지 궁금합니다. 현재 쓰레드들 중 APC 큐가 비어있는애를 우선적으로 찾아서 넣어주는것인지, 처리된 모든 I/O의 결과들이 결국은 APC큐가 비어있는 쓰레드 1개가 전부 몰빵해서 받는건지 궁금합니다.

답변 1

1

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

몰빵해서 처리하진 않고 쓰레드마다 APC 큐가 있습니다.
실제로 Overlapped 모델에서는 비동기 함수 요청을 한 쓰레드가 완료 처리를 받습니다.

essenger M님의 프로필 이미지
essenger M
질문자

결국 Overlapped 모델은 자기(쓰레드)가 요청한 결과를 자기만 받을 수 있는거고 IOCP는 다른쓰레드가 요청한 IO 역시 다른 쓰레드가 가져가서 처리할 수 있어서(일종의 멀티 플렉싱) 더 효과적인걸로 이해되네요 

essenger M님의 프로필 이미지
essenger M

작성한 질문수

질문하기