본문 바로가기

Computer/ServerProgramming

소켓 I/O :: IOCP

1. IO Completion Port
   - 내부에 큐를 생성하여 입출력이 완료되면 Completion Packet 생성하여 Completion Queue에 저장
   - 스레드는 Completion Queue 에서 패킷을 하나씩 가져와 처리




2. IOCP
   - 비동기 입출력 모델( 먼저 입출력한 후 나중에 확인 )
   - 제한된 스레드를 사용하여 컨텍스트 스위칭 시간 절약



3. IOCP 구현
   - Completion Port 오브젝트 생성 (소켓과 오브젝트 연결)
      HANDLE CreateIoCompletionPort()
      서버의 리슨 소켓 / 각 클라이언트의 소켓이 생성될 때 오브젝트 생성
   - 보통 CPU 의 2배수로 WorkerThread 생성
      루프를 돌면서 Completion Queue 를 계속 호출
   - Completion Queue 의 Completion Packet 확인
      발생한 IO를 가져오기 
        BOOL GetQueuedCompletionStatus()
      Overlapped 구조체를 통해 IO_READ / IO_WRITE 를 구분

'Computer > ServerProgramming' 카테고리의 다른 글

소켓 I/O :: 비교  (0) 2010.02.22
소켓 I/O :: Overlapped Callback  (0) 2010.02.22
소켓 I/O :: WSAEventSelect  (0) 2010.02.22
소켓 I/O :: WSAAsyncSelect  (0) 2010.02.22
소켓 I/O :: Select  (0) 2010.02.22