공부용 블로그

Blocking/ non-Blocking/ Synchronous/ Asynchronous 본문

설계/WebServer

Blocking/ non-Blocking/ Synchronous/ Asynchronous

tomato212 2018. 8. 2. 23:33

(참고) https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/

Blocking과 Synchronous 비슷
non-Blocking과  Asynchronous  비슷

두 개씩 비슷한거 같지만 관심사가 다르다.

-----------------------------------------------------------------------------------------------------
Blocking/ non-Blocking은 호출되는 함수가 바로 리턴하느냐 마느냐

*Blocking 
-> 함수 호출 -> 호출된 함수가 작업을 완료할때까지 호출한 함수를 잡아둠 

*non-Blocking
-> 함수 호출 -> 거의 바로 응답 -> 호출한 함수는 다른 일을 할 수 있는 기회가 주어진다.
-----------------------------------------------------------------------------------------------------

Synchronous/ Asynchronous 는 호출되는 함수의  작업완료 여부를 누가 신경쓰냐 

* Synchronous
-> 호출하는 함수가 호출되는 함수의 작업완료 후 리턴을 기다림 or 호출되는 함수로부터 바로 리턴을 받더라도 작업완료 여부를 계속 확인하며 신경쓴다.

*Asynchronous
-> 호출되는 함수에게 콜백 전달 -> 호출되는 함수의 작업이 완료되면 호출되는 함수가 전달받은 콜백을 실행 
-> 호출한 함수는 작업 완료여부를 신경쓰지 않는다.
-----------------------------------------------------------------------------------------------------

낯선 조합
NonBlocking-Sync