소켓프로그래밍이 tcp udp부터 시작해서 select wsaEvent, overlapped, .. 까지해서 IOCP가 나오기까지를 확인해보자.
각 모델 별로 장단점을 정리하면서 IOCP의 특정도 적어 놓겠습니다.
------------------- select 모델 (안드로이드에서 하면 문제가 없다, 안드로이드는 linux플랫폼기반이니)
-장점 : 윈도우 리눅스 공통
-단점 : 성능이 안좋다 왜냐? 소켓set에 계속해서 등록을 해줘야하기에, 갯수 제한 64개
----------------------------wsaEventSelect 모델-------------------------------------------
- 비교적 뛰어난 성능이지만 64개 갯수제한이 동일하게 있다
------------------------------------------------- Overlapped (이벤트 기반)------------------------
- 장점은 성능이 좋다 단점은 64개로 갯수제한
------------------------------Overlapped (콜백 기반)------------------------------------------
1.성능이 좋지만 단점은 모든 비동기 소켓 함수에서 사용가지않다 (accept에는 callback을 걸 수가없다)
2. 빈번한 alertable wait로 인한 성능이 저하된다.
3. apc큐자체가 쓰레드별로 각자있다. 다른 쓰레드가 대신 처리를 못한다는 단점이 있따.
Reactor Pattern (논블로킹 소켓인데 소캣 상태를 확인후 뒤늦게 RECV, SEND를 호출한다)
Proactor Pattern (미리 RECV나 SEND를 하고, overlapped WSA로 미리 걸어 놓은 후 내부적으로 처리하도록한다
IOCP (Completion Port) 모델
Overlapped 콜백 방식에 있었던 APC개념을 Completion Port로 대체했는데 쓰레드마다 있는건 아니고 1개만 있다 중앙에서 관리하는 큐느낌이다
Completion Port처리를 GetQueueCompletionStatus
'네트워크프로그래밍' 카테고리의 다른 글
overlapped모델(callback방식) (0) | 2022.04.12 |
---|---|
Overlapped모델(이벤트기반) (0) | 2022.04.11 |
WSAEventSelect 모델 (0) | 2022.04.11 |
select 모델 (0) | 2022.04.10 |
소켓옵션 설정 (0) | 2022.03.30 |