직접 제어할 수 없는 대상의 작업이 끝날 때까지
제어권을 넘겨주지 않아서 계속 대기해야 하는 상태를 말한다.

직접 제어할 수 없는 대상의 작업 처리 여부와 상관이 없이 바로
제어권을 넘겨주어 자신의 작업을 할 수 있는 상태를 말한다.

다른 사람이 작업할때 내가 일을 처리할 수 있는
제어권(권한)이 있는지 없는지로 Blocking과 Non-Blocking으로 나눌 수 있습니다.
뜻 : 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미한다.
호출되는 대상(Server)의처리 완료(결과)여부를호출하는 자신(Client)이 신경을 쓴다.

뜻 : 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미한다.
호출되는 대상(Server)의처리 완료(결과)의 여부를호출 되는 대상(Server)이 신경을 쓴다.

요청한 작업에 대한 결과를 돌려줄때
순서와 결과에 관심이 있는지 없는지로 판단할 수 있습니다.

Blocking-Sync는
함수B가 바로 리턴(제어권X)하지 않고 작업이 완료되는 결과에 함께함수A에게 전달 한다.


Blocking-Async는
함수B가 바로 리턴(제어권X)하지 않고, 이함수A는 작업 완료 여부를 신경쓰지 않는다.

Java Script의 Event Handler처리가 있다.<button id="button1" onclick="button1_click();">버튼1</button>
<script>
function button1_click() {
alert("버튼을 눌렀습니다.");
}
</script>
NonBlocking-Sync는
함수B가 바로 리턴(제어권O)하고,함수A는 작업 완료 여부를 신경쓰게 된다.

카카오톡과 같은 채팅방에서 많이 사용한다. NonBlocking-Async는
함수B가 바로 리턴(제어권O)하고, 작업이 완료되면 결과를함수A에게 전달한다.

제어의 관점순서와 결과의 관점