IOCP는 I/O Completion Port의 약자로 Windows 운영체제에서 제공하는 비동기 I/O 처리 메커니즘이다. 고성능 네트워크 서버나 파일 처리 애플리케이션을 개발할 때 사용된다.
IOCP는 여러 개의 비동기 I/O 작업을 동시에 처리할 수 있도록 설계된 이벤트 기반 큐 시스템이다. 이를 통해 서버는 소수의 스레드로도 다수의 클라이언트 요청을 효과적으로 처리할 수 있으며 스레드 풀을 활용하여 CPU와 메모리 자원을 효율적으로 사용할 수 있다.
비동기 작업을 등록하면 요청이 진행되며 운영체제는 요청된 I/O 작업을 완료할 때까지 기다렸다가 완료되면 IOCP는 완료되었다는 내용을 큐에 추가하고 이를 처리할 스레드가 활성화된다. IOCP는 작업을 처리할 스레드 풀을 운용하며 가용 스레드를 최적화하여 처리한다. 작업 수에 따라 스레드의 수를 동적으로 조절한다.
비동기 I/O와 스레드 풀을 다루는 코드가 복잡하고 작동간에 발생하는 버그는 디버깅에 까다롭다. IOCP의 경우 윈도우에만 적용되므로 타 플랫폼에 적합하지 않다.