지금까지 제어권과 결과값을 가지고 동기와 비동기, 블로킹과 논블로킹을 설명했다.
동기는 함수의 제어권과 결과 값을 반환하는 시간이 같다.
비동기는 함수의 제어권과 결과값을 반환하는 시간이 다르다.
블로킹은 함수가 제어권을 가지고 있다가 결과값을 반환할 때 같이 제어권을 반환한다.
논블로킹은 함수가 제어권을 가지고 있다가 결과값을 반환하지 않아도 제어권을 반환한다.
결과 적으로 같은 말이 아닌가!??!!???🤷🏻♀️
맞다.
동기/비동기 블로킹/논블로킹은 추상적인 개념이다. 보는 관점에 따라서 달라 질 수 있다는 것이다.
코끼리를 삼킨 보아뱀일까? 모자일까? 둘다 맞는 것이다. 관점의 차이일 뿐이다.
이처럼 Blocking은 제어권에 관한 이야기이고, Synchronous는 제어권을 반환하는 시간에 관한 것이다.