IOCP는 Input/Output Completion Port의 약자인데, 입력과 출력의 완료를 담당할 포트를 지정해서 처리하겠다는 의미이다.
입력과 출력의 완료시점에서의 통지는 overlapped(중첩 입출력)에서 처리가 되므로 기술은 윈도의 중첩 입출력 기술을 확장 시킨 것이다.
이런식으로 I/O 중 데이터의 전송을 중첩시켜서 보냄으로써 비동기적으로 빠르게 I/O를 처리할 수 있게 된다.
이런 IOCP는 비동기, 스레드 풀링, 논블로킹과 같은 개념을 쓰는데
이렇게 사용했을 때의 장점은
1.스레드 풀(Thread Pool)을 쉽게 사용할 수 있다. (운영체제가 직접 스레드 풀링 관리)
2.스레드를 효율적으로 사용하므로 CPU 자원소모가 줄어든다.
그렇지만
1.프로그램 구현이 복잡해진다.
2.Window에서만 사용이 가능하다.
등과 같이 단점도 존재하여 사용하는데 요주의가 필요하다.