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