동기식과 비동기식, 블럭킹과 논블러킹

synchronous/Asynchronous, Blocking/Non-Blocking

 

대충 동기와 블럭, 비동기와 논블럭... 대충 이렇게 짝지어서 생각해 왔었다. 

그런데 뭐가 어떻게 다르고 어떤 경우에 쓰이는지 궁금했다.

글에 앞서, 호출한 함수를 Client, 호출된 함수를 Server(API) 대입하여 생각하고 글을 작성 하였음.[각주:1] 

노드와 노드 사이의 커뮤니케이션

Node에 관한 포스팅으로 가기

 

무엇(What)이 다른가? 

Client와 Server의 관심사

 

Synchronous / Asynchronous

Client의 관심사

 

Server의 작업완료를 

1. Client가 신경쓰냐? synchronous

2. Server가 신경쓰냐? Asynchronous

 

Blocking / Non-Blocking

Server의 관심사

 

Server의 작업완료 체크를

1. Client에게 바로응답 하느냐(Non-Blocking)

2. 작업이 끝나고 응답 하느냐(Blocking)

 

어떻게(How) 다른가?

Example CASE

1. Synchronous & Non-Blocking

클라이언트는 작업완료까지 대기하면서 다른 일 못함.

서버에게 작업 완료 됐는지 계속 푸시(?)함

 

이것을 폴링이라 한다.

더보기

폴링 : 폴링이란 하나의 장치가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 이 방식은 버스, 멀티포인트 형태와 같이 여러 개의 장치가 동일 회선을 사용하는 상황에서 주로 사용된다

 

Client : (옆에서 대기하면서...) 작업 끝났어요?

Server : 아직요...

Client : 작업끝났어요?

Server : 아직요...

Client : 작업끝났어요?

Server : 네 끝났어요

Client : (다른일 시작)

 

2. Asynchronous & Non-Blocking

Client는 작업완료가 안되어도 다른 작업 가능

Server가 작업완료 되면 알려줌

 

Client : 작업끝나면 알려주세요, 다른작업 하고 있을게요.

Server : Yes, Sir!

Client : ( 열심히 일하는 중... )

... If few moments later ... 

Server : Job finished. Sir!

Client : Good Job! 😍

 

3. Synchronous & Blocking

아직 필자가 케이스를 이해를 못했습니다...-_-;; 이해하면 업데이트 합니다

 

4. Asynchronous & Blocking

아직 필자가 케이스를 이해를못했습니다...-_-;; 이해하면 업데이트 합니다.

 

 

 

 

 

 

 

Reference

https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/

https://musma.github.io/2019/04/17/blocking-and-synchronous.html

https://private.tistory.com/24

 

 

  1. 노드(Node)와 노드의 커뮤니케이션이 더 근본적인 개념인것 같다 [본문으로]

+ Recent posts