1. 블로킹 (Blocking) - 호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 만든다. - 클라이언트가 I/O 작업을 진행하면 해당 프로세스가 진행하는 작업이 중지된다. - 다른 클라이언트에 영향을 미치지 않게 하기 위해 클라이언트 별로 쓰레드를 만들어야 한다. - 쓰레드가 많이질수록 CPU의 컨텍스트 스위칭 횟수가 증가한다. - 쓰레드가 요청한 동작이 수행 가능해질 때 까지 대기한다. 2. 논블로킹 (Non-Blocking) - 호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 한다. - Blocking 방식의 비효율성을 극복하고자 만든 것이다. - 클라이언트가 I/O 작업을 진행해도 유저 프로세스의 작업을 중단시..