데이터가 올 때까지 호출 스레드가 멈춥니다.
read()
I/O TERMS
블로킹과 동기
면접에서는 두 축을 섞어 말하기 쉽습니다. 호출자가 멈추는지와 완료를 누가 전달하는지를 분리하면 네 칸으로 정리됩니다.
구분
블로킹
논블로킹
동기
즉시 반환하고 호출자가 반복 확인합니다.
EAGAIN비동기
완료 통지는 비동기지만 기다리면 장점이 줄어듭니다.
rare요청을 맡기고 다른 일을 하다가 완료 큐나 콜백을 받습니다.
io_uring블로킹과 논블로킹은 호출 직후 스레드의 상태, 동기와 비동기는 완료 확인의 주체를 기준으로 설명합니다.
select와 epoll
여러 fd의 준비 상태를 감시하는 동기식 멀티플렉싱입니다.
aio와 io_uring
요청 제출과 완료 회수를 분리해 비동기 모델에 가깝습니다.
핵심 구분
멈춤 여부와 완료 통지 주체를 한 문장씩 나누어 말합니다.