page-locking
우리가 데이터 송수신에 사용하는 함수 WSASend(), WSARecv()는 파라미터로 넘겨진 버퍼가 페이징 되지 않도록 페이지 단위(윈도우에서는 4KB)의 락을 걸게 된다. 운영체제는 이러한 페이지의 최대치가 존재하는데, 이 한계를 넘길 경우 Overlapped I/O는 실패하게 된다. 그래서 우리는 흔히 ZeroByte Recv이라는 꼼수를 통해 이벤트 발생과 데이터의 수신을 분리해서 락이 걸리는 페이지를 줄이는 방법을 사용한다. WSABUF wsabuf; wsabuf.buf = nullptr; wsabuf.len = 0; ::WSARecv(socket, &wsabuf, 1, NULL, &dwFlag, (LPWSAOVERLAPPED)&over_recv, NULL); WSARecv 함수를 이렇게 호출하..