Blocking / Non-Blocking / Synchronous / ASynchronous
Synchronous
ASynchronous
사용 되었던 것은 Blocking Synchronous, Non-Blocking ASynchronous
여러 이유로 IOCP로 대체됨
Select Model
장점) 윈도우/리눅스 공통
단점) 성능 최하, 64개 제한
WSAEventSelect Model
장점) 비교적 뛰어난 성능
단점) 64개 제한
Overlapped Model은 ASynchronous + Non-Blocking 방식의 입출력 모델이다.
Overlapped (Event)
장점) 성능
단점) 64개 제한
소켓과 이벤트를 1:1로 대응하는 것이 여러 제한이 있었다.
Overlapped (CallBack)
장점)성능
단점) 모든 비동기 소켓 함수에서 사용 가능하지는 않다. 빈번한 Alertable로 인한 성능 저하
APC큐가 쓰레드마다 있다.
APC란?
쓰레드가 알람 가능한 상태가 되었을 때, 호출할 콜백 함수들을 모아둔 queue
IOCP*
Input/Output Completion Port
APC를 Completion Port가 처리한다.
다수의 Thread가 Completion Port를 통해 처리된다. (일감이 공유되는 Queue를 만든다.)