event loop

I/O 멀티플렉싱 감시 구조

select, poll, epoll은 연결마다 스레드를 막아 두지 않고, 읽기·쓰기 준비가 끝난 fd만 이벤트 루프에 돌려줍니다.

select

fd_set 크기와 매번 전체 스캔 비용 때문에 단순하지만 확장성이 제한됩니다.

poll

fd 배열로 제한은 완화하지만 여전히 매번 목록을 훑는 비용이 있습니다.

epoll

커널에 관심 fd를 등록하고 준비된 이벤트 중심으로 처리합니다.

루프

준비 이벤트를 받고, 읽고, 쓰고, 다시 관심 상태를 갱신하는 반복 구조입니다.

핵심 차이

멀티플렉싱의 핵심은 연산 속도가 아니라 대기 비용입니다. 준비되지 않은 소켓을 건너뛰고 준비 이벤트만 처리합니다.

운영 사례

Nginx, Redis, Node.js, asyncio는 이 모델을 각 언어와 런타임으로 감쌉니다.

대기 모델 검수

blocking I/O 한계와 readiness 이벤트 모델을 비교합니다.