논블로킹과 Overlapped I/O(비동기 I/O)에 대해 알아보았다. 이 둘의 차이점을 간단하게 정리할 수 있다.
따라서, 논블로킹 소켓은 1바이트라도 버퍼가 비어있다면 송수신이 가능하여 함수를 호출하면 되지만, 일부 상황에서 would block이 나타나 재시도를 해야된다. 이는 I/O 처리가 끝날 때까지 반복된다.
반면에, Overlapped I/O는 단순하게 I/O 처리 중/완료로 상태를 구분하기 때문에, 완료만 기다리면 작업이 끝난다.
논블록 소켓에서는 상태 확인 후 뭔가를 합니다. Overlapped I/O에서는 일단 저지른 후 결과를 확인합니다. 그래서 논블록 소켓을 '뒤늦게'라는 의미의 리액터 패턴이라고 합니다. Overlapped I/O는 '미리'라는 의미의 프로액터 패턴이라고 합니다. - 게임서버 프로그래밍 교과서 (저 : 배현직) P211
게임서버 프로그래밍 교과서(저:배현직),
[C++과 언리얼로 만드는 MMORPG 게임개발 시리즈] Part4: 게임서버(강사 : 루키스)를 학습하고 정리한 내용입니다.