Blocking, Non-Blocking, Sync, Async

Umji You·2021년 8월 27일

Blocking과 Non-Blocking

1. Blocking

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

image


2. Non-Blocking

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

image

정리

다른 사람이 작업할때 내가 일을 처리할 수 있는 제어권(권한)이 있는지 없는지로 Blocking과 Non-Blocking으로 나눌 수 있습니다.


Synchronous 와 Asynchronous

3. Synchronous(동기)

뜻 : 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미한다.

호출되는 대상(Server)처리 완료(결과) 여부를 호출하는 자신(Client)이 신경을 쓴다.

싱크


4. Asynchronous(비동기)

뜻 : 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미한다.

호출되는 대상(Server)처리 완료(결과)의 여부를 호출 되는 대상(Server)이 신경을 쓴다.

어싱크

정리

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


4가지 조합

4가지조합표

1. Blocking + Synchronous

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

  • 사용 예시
    • JAVA의 입출력에 사용된다.
    • javaIO
    • 제어권과 결과를 같이 받아서 처리한다.

2. Blocking + Asynchronous

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

  • CallBack 함수?
    • CallBack 함수란 이름 그대로 나중에 호출되는 함수를 말한다.
    • 예시로는 Java ScriptEvent Handler처리가 있다.
<button id="button1" onclick="button1_click();">버튼1</button>
<script>
function button1_click() {
	alert("버튼을 눌렀습니다.");
}
</script>
  • 사용 예시
    • Node.js 와 MySQL의 조합

3. Non-Blocking + Synchronous

NonBlocking-Sync는 함수B가 바로 리턴(제어권O)하고, 함수A는 작업 완료 여부를 신경쓰게 된다.

  • 사용 예시
    • message polling 방식
    • 카카오톡과 같은 채팅방에서 많이 사용한다.

4. Non-Blocking + Asynchronous

NonBlocking-Async는 함수B가 바로 리턴(제어권O)하고, 작업이 완료되면 결과를 함수A에게 전달한다.

  • 사용 예시
    • JAVA SCRIPT
    • API요청을 하고 다른작업을 하다가 callBack을 통해서 추가적인 작업을 처리할 떄 쓰인다.

총 정리

  • Blocking / Non-Blocking
    • 제어의 관점
  • Sync / Async
    • 순서결과의 관점
profile
꾸준한 기록을 하자

0개의 댓글