비동기 동기 블락 논블락 비슷하다 생각했는데 다르다는 얘기를 많이 들어 왔다. 그래서 유튜브의 우아한 Tech 영상을 참고하여 개인적인 기록을 남기고자 한다.
다음은 우리가 일반적으로 알고 있는 사실이다.
블락 | 논블락 | |
---|---|---|
동기 | 자바 | ? |
비동기 | ? | 자바스크립트 |
다음의 주제는
의 관점에서 블락 논블락 동기 비동기를 설명한다.
블락은 제어권과 리턴값이 같이 넘어오는것을 블락이라고한다.
C언어나 JAVA는 일반적으로 위와같은 방식으로 동작한다.
그렇다면 논블락은 제어권은 바로 넘겨받고 리턴값은 어떻게 되는지 모르는것을 논블락이라고 한다.
syn(함께) + chrono(시간)
시간이 일치하는가? 로 정의함
제어권의 반환과 리턴값 반환의 시간을 맞추는것
제어권의 반환과 리턴값 반환의 시간이 맞지 않음
위 내용을 보면 블락논블락 동기비동기는 똑같은 개념처럼 보인다.
보는 관점이 다르다.
- 블록,논블록은 제어권의 시각에서 바라본것
- 동기,비동기는 시간의 시각에서 바라본것
- (완료됨, 완료되지 않음)결과값과 제어권을 받는 시간이 같기때문에 동기
- 실제로 결과값은 오지 않고 제어권만 왔기 때문에 논블락
불필요한 컨택스트 스위칭이 일어나는것처럼 보이지만 장점이 있다.
제어권을 마냥 기다리는게 아니라 제어권을 가지고와서 나만의 일을 할 수 있음
제어할 수 없는 대상을 어떻게 제어하는가?
대상들의 시간을 일치 시키는가?