본문 바로가기

프로그래밍

Blocking vs NonBlocking , Synchronous vs Asynchronous

Blocking vs NonBlocking

호출되는 함수가 바로 리턴 되는가?

 - yes : NonBlocking - 함수 결과를 기다리지 않고 리턴 후 다른 작업 수행

 - no : Blocking - 함수 결과가 나올 때 까지 대기


Synchronous vs Asynchronous

호출되는 함수의 작업 완료를 기다리는가?

 - yes : Synchronous

 - no : Asynchronous - Callback 으로 받음


Blocking은 Syncronous와 비슷하고 NonBlocking은 Asynchronous와 비슷하다


Blocking vs Synchronous

함수가 리턴을 기다리는 동안 대기큐에 머무는게 필수인가?

 - yes : Blocking

 - no : Synchronous


NonBlocking vs Asynchronous

함수가 리턴 될 때 결과와 함께 반환 되는가?

 - yes : NonBLocking

 - no : Asynchronous


조합을 바꾸면 어떻게 동작할까?

NonBlocking-Synchronous

호출되는 함수는 바로 리턴 후 다른 작업을 수행할 수 있게 해줌, but 호출 된 함수의 작업 완료를 기다린다.(완료 되었는지 계속 물어봄) 

즉, NonBlocking 함수 호출 후 바로 리턴 받아서 다른 작업을 할 수 있게 되지만, 함수 호출에 의해 수행되는 작업이 완료된 것은 아니며, 호출하는 함수가 호출되는 함수 쪽에 작업 완료 여부를 계속 문의한다.

Blocking-Asynchronous

호출되는 함수는 바로 리턴하지 않고, 호출하는 함수는 작업 완료 여부를 신경쓰지 않는다.


[참조]

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

http://asfirstalways.tistory.com/348

'프로그래밍' 카테고리의 다른 글

HTTP/2  (0) 2019.03.04
HTTP와 HTTPS의 차이  (0) 2019.03.04
객체지향 5대 원칙 - SOLID  (0) 2019.02.07
MVC, MVP, MVVM 패턴  (0) 2018.10.08
circuit breaker  (0) 2017.09.25