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