Async VS Sync VS Block VS None-Block

김영진·2021년 6월 13일
0

개념

목록 보기
1/3

목적

비동기 동기 블락 논블락 비슷하다 생각했는데 다르다는 얘기를 많이 들어 왔다. 그래서 유튜브의 우아한 Tech 영상을 참고하여 개인적인 기록을 남기고자 한다.

내용

다음은 우리가 일반적으로 알고 있는 사실이다.

블락 논블락
동기 자바 ?
비동기 ? 자바스크립트

다음의 주제는

  • 제어권
  • 리턴값

의 관점에서 블락 논블락 동기 비동기를 설명한다.

블락

블락은 제어권과 리턴값이 같이 넘어오는것을 블락이라고한다.
C언어나 JAVA는 일반적으로 위와같은 방식으로 동작한다.

논블락

그렇다면 논블락은 제어권은 바로 넘겨받고 리턴값은 어떻게 되는지 모르는것을 논블락이라고 한다.

동기

syn(함께) + chrono(시간)
시간이 일치하는가? 로 정의함
제어권의 반환과 리턴값 반환의 시간을 맞추는것

비동기

제어권의 반환과 리턴값 반환의 시간이 맞지 않음

블락 논블락 === 동기 비동기 ?

위 내용을 보면 블락논블락 동기비동기는 똑같은 개념처럼 보인다.

중간결론

보는 관점이 다르다.

  • 블록,논블록은 제어권의 시각에서 바라본것
  • 동기,비동기는 시간의 시각에서 바라본것

동기 논블락

  1. 어플리케이션이 있고, 커널이 있다.
  2. 어플리케이션은 작업을 요청하고 바로 제어권을 가져온다.
    2-1. (이때 완료되지 않음)결과값과 제어권을 다시 받는다.
    2-2. Dart에서는 Future에 대응되는 개념으로 생각함(뇌피셜)
  3. 어플리케이션은 제어권을 가지고 다시 작업을 하다 다시 작업이 마무리되었는지 커널에 물어본다.
    3-1. (이때 완료되지 않음)결과값과 제어권을 다시 받는다.
    3-2. Dart에서는 Future에 대응되는 개념으로 생각함(뇌피셜)
  4. 어플리케이션은 제어권을 가지고 다시 작업을 하다 다시 작업이 마무리되었는지 커널에 물어본다.
    4-1. (이때 완료되지 않음)결과값과 제어권을 다시 받는다.
    4-2. Dart에서는 Future에 대응되는 개념으로 생각함(뇌피셜)
  5. 어플리케이션은 제어권을 가지고 작업을 하다 작업이 마무리 되었는지 묻는다.
  6. 마무리되었다는 대답을 받고 결과값을 받는다.
    6-1. (완료됨)결과값과 제어권을 다시 받는다.
    6-2. Dart에서는 Future에 대응되는 개념으로 생각함(뇌피셜)
  • (완료됨, 완료되지 않음)결과값과 제어권을 받는 시간이 같기때문에 동기
  • 실제로 결과값은 오지 않고 제어권만 왔기 때문에 논블락

불필요한 컨택스트 스위칭이 일어나는것처럼 보이지만 장점이 있다.

장점

제어권을 마냥 기다리는게 아니라 제어권을 가지고와서 나만의 일을 할 수 있음

결론

블락, 논블락

제어할 수 없는 대상을 어떻게 제어하는가?

동기, 비동기

대상들의 시간을 일치 시키는가?

profile
2021.05.03) Flutter, BlockChain, Sports, StartUp

0개의 댓글