

어떤 작업을 요청했을 때 그 작업이 종료될 때까지
기다린 후 다음 작업을 동작한다.데이터를 주고받는 '순서'가 중요할때 사용된다.
요청한 작업만 처리하면 되기 때문에 전체적인 수행 속도는 빠를 수 있다. (일만 하면 된다)
한 작업에 대한 시간이 길어질 경우, 전체 응답이 지연될 수 있다.
어떤 작업을 요청했을 때 그 작업이 종료될 때까지
기다리지 않고(작업을 위임하고), 다음 작업을 동작한다.
요청했던 작업이 끝나면 결과를 받고, 그에 따른 추가 작업이 있다면 수행한다.요청 순서에 상관없이, 동시에 다수의 작업을 처리할 수 있다.
작업이 끝날 때 따로 이벤트를 감지하고 결과를 받아 그에 따른 추가 작업을 해줘야하기 때문에,
비교적 느릴 수 있다.I/O 작업이 잦고, 빠른 응답속도를 요구하는 프로그램에 적합하다.
블로킹은 특정 작업이 완료될 때까지
프로그램 실행이 멈춰 있는 상태를 말한다.예를 들어, 파일을 읽어들이는 동안에는
다른 작업을 처리하지 못하고 기다리게 되는 상황이 블로킹 상황이다.
논블로킹은 특정 작업의 완료 여부와 상관없이
다른 작업을 계속해서 진행할 수 있는 상태를 말한다.논블로킹 상황에서는 파일을 읽어들이는 동안에도 다른 작업을
동시에 처리할 수 있다.

Blocking 과 Non-Blocking 에서 언급한 Blocking 과 동일하다.
특정 작업이 완료될 때까지
프로그램 실행이 멈춰 있는 상태를 말한다.즉 제어권을 특정 작업이 완료될 때까지 돌려받지 못한다.
제어권을 돌려받을때 결과값을 동시에 반환 받는다.
동기적인 방식을 유지하면서 Blocking을 피한다.
즉 제어권을 특정 작업에게 잠깐 줬다가 바로 돌려받는다.
결과 값은 작업이 끝나면 돌려받는다.가능한 시나리오 중 하나로
작업이 즉시 완료되지 않는 경우에 루프문을 통해 계속 상태를 확인한다.
이 방식은 CPU 시간을 낭비할 수 있다.
Blocking 과 Non-Blocking 에서 Non-Blocking 과 동일하다.
특정 작업의 완료 여부와 상관 없이
다른 작업을 계속해서 진행할 수 있는 상태를 말한다.
비동기 상황 속에서 Blocking 방식을 사용한다.
비동기 함수를 실행했음에도 불구하고 이 함수의동작이 끝날 때 까지 기다리는 상태를 말한다.