ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IOCP방식의 TCP 기반 채팅 서버/클라이언트
    DevLog 2022. 10. 26. 12:51

    01. 구동 영상

    02. 주요 구현 내용

    • IOCP 구현
    • 서버가 다수의 클라이언트를 관리하는 과정에서의 임계영역 동기화를 위한 Ciritical Section 사용
    • 클라이언트는 전송/수신 스레드로 나누어 멀티스레드로 구현

    03. 후기

    • 다수의 스레드가 Blocked상태로 대기하다가, IO Complete 이벤트가 발생하면 처리하는 IOCP를 이해할 수 있었다.
    • 비동기 IO와 Overlapped IO에 대해 이해할 수 있었다.
      • 동기 IO보다 좋은 점은 Write/Recv해놓고 다른 걸 처리할 수 있다는 점?
      • 하지만 IO 상태를 확인해야 한다는 점에서 코드가 복잡해지는 느낌
    • 하나의 소켓당 하나의 스레드를 할당하는 방식보다 적게 스레드를 사용하고도 효율적으로 처리할 수 있을듯 하다.
    • Select방식과 비교해보면, 멀티스레드를 사용하므로 많은 수의 클라이언트가 통신을 주고받는 구조에서 효율적일듯
    • 하지만 어떤 스레드가 어떤 소켓의 IO를 처리할 지 모르니까 디버깅이 까다로울듯 하다.

    GitHub Link

    https://github.com/KimNamWook316/IOCP_Chatting

    댓글

GameDev.