Blocking/Non-Blocking, Sync/Async

Haechan Kim·2022년 2월 24일

Node.js

목록 보기
13/15
post-thumbnail
  • Blocking
    자기 작업 진행하다가 다른 주체의 작업 시작되면 끝날때까지 기다렸다가 끝나면 실행.

  • Non-Blocking
    다른 주체 작업 관련없이 자기 작업 실행.

-> 다른 주체가 적업을 할 때 자신의 제어권이 있는지 없는지.
제어권이란?
자신(함수)의 코드를 실행할 권리.
제어권을 가진 함수는 자기 코드 끝까지 실행한 후, 자신을 호출한 함수에 돌려줌.

블로킹은 A함수가 B함수를 호출하면 제어권을 A에서 B로 넘겨줌.
A는 B에게 제어권 넘겨주었기 때문에 실행 잠시 멈춤.
B 실행 끝나면 자신 호출한 A에게 제어권 돌려줌.

논블로킹은 A가 B 호출해도 제어권 그대로 자신이 갖고있음.

  • Sync(동기)
    작업 동시에 수행하거나, 끝나거나, 끝나는 동시에 시작.
    B에서 결과 반환하면 해당 업무 바로 실행

  • Async(비동기)
    시작, 종료 일치하지 않고 끝나는 동시에 시작하지 않음.

동기와 비동기는 순서와 결과에 관심이 있음.

  • Blocking / Sync
    블로킹의 관점은 제어권, 동기의 관점은 결과의 처리.
    -> 결과 반환하면 해단 업무 바로 처리. 자바..

  • Non-Blocking / Async
    논블로킹은 다른 작업 시작되어도 자신이 하던 작업 멈추지 않음.
    async는 결과 바로 처리 안함.
    -> js 콜백, 프로미스

즉 Blocking/Non-Blocking 은 제어권의 관점, Sync/Async 는 순서와 결과(처리)의 관점.

0개의 댓글