Create Game

    [SERVER] IOCP

    1. IOCP 1.1 Overlapped I/O와 IOCP의 차이점 - Thread Pooling - 재사용이 가능한 스레드를 유지할 수 있는 최적화 된 기능 1.2 IOCP - TCP로 서로 송수신할 때 WSASend / WSARecv와 같은 비동기 입출력 함수를 호출 - 스레드에서 내부적으로 APC(Asynchronous Procedure Call Queue) 큐가 생성 - 입출력이 완료된 결과를 저장 - 사용자가 생성한 IOCP 커널 객체에 접근하는 여러 스레드들을 두고 입출력 결과를 처리 - IOCP 객체 생성 - FileHandle: IOCP와 연결할 HANDLE 지정 - IOCP 객체를 생성해야하므로 INVALD_HANDLE_VALUE을 사용 - ExistingCompletionPort: 이미..

    [SERVER] Overlapped I/O

    1. Overlapped I/O 1.1 Overlapped I/O 의미 - 하나의 스레드에서 둘 이상의 패킷 데이터를 통신용 소켓에 송수신 - 여러 개의 소켓에 입출력이 중첩된 상황 1.2 Non-blocking Code 수정 https://choiprogramming.tistory.com/106 [SEVER] Non-blocking Socket 1. Blocking Socket 1.1 Blocking - accept, connect, recv, send - 대부분 소켓 관련 함수들은 호출 스레드를 블로킹 상태로 만듦 - 블로킹 상태: 현재 스레드가 더 이상 코드를 진행하지 않고 block 상태로 멈춰 있 choiprogramming.tistory.com 1.3 Overlapped I/O - overla..

    [SERVER] WSAEvent Select

    1. WSAEventSelect (Windows Socket Async) 1.1 WSAEventSelect 의미 - 입출력 함수를 안전하게 호출할 수 있는 시점을 운영체제가 알려줌 - 단순한 입출력 방식보다 편리하게 여러개의 소켓을 처리 - 운영체제에서 함수 호출의 시점을 알려주기 때문에 비동기처럼 처리할 수 있음 - 비동기 입출력 모델 (Overlapped I/O, IOCP) 1.2 Select Code 수정 https://choiprogramming.tistory.com/110 [SERVER] Select 1. Select 1.1 Non-blocking Socket의 문제 - 함수의 결과를 예상X - 패킷 수신 여부와 관계없이 바로 리턴 → buf의 상태가 어떤지 알 방법X - 소켓이 Read/Wri..