[JavaScript] Blocking, Non-blocking, Sync, Async 이해하기

2023. 2. 7. 06:57FE/JavaScript

블록킹, 논블록킹은 프로세스 유휴 상태에 대한 개념이고 동기와 비동기는 프로세스 순서에 대한 개념이다.

 

Blocking vs Non-blocking

다른 주체가 작업할 때 자신의 제어권 유무로 볼 수 있다.

 

Blocking

호출한 함수가 호출된 함수에게 제어권을 넘기면 호출된 함수가 끝날 때까지 가지고 있다가 호출한 함수에게 되돌려 주는 경우

 

Non-blocking

호출한 함수가 호출된 함수에게 제어권을 넘기면 호출된 함수가 작업이 끝나지 않더라도 제어권을 호출한 함수에게 바로 넘겨주는 경우

 

Sync vs Async

결과를 받았을 때 순서와 결과에 관심 유무로 판단할 수 있다.

 

Synchronous

호출된 함수의 실행 결과, 종료를 호출한 함수가 관심을 가지고 있는 경우

 

Asynchronous

호출된 함수의 실행 결과, 종료를 호출한 함수가 관심을 가지지 않는 경우

 

Sync, Async, Blocking, Non-Blocking

  Blocking Non-Blocking
Sync 다른 작업이 시작되는 동안
동작하지 않는다.
결과를 반환하면 해당 작업을 바로 처리한다.
다른 작업이 있어도 제어권을 가지고 작업을 하다가 중간중간 다른 작업의 결과를 확인하고 다른 작업의 결과가 끝나면 결과를 가지고 작업을 처리한다.
Async 다른 작업이 시작되는 동안 동작하지 않는다.
다른 작업의 결과를 바로 처리하지 않아도 된다.
다른 작업이 시작하여도 자신이 하던 작업을 멈추지 않는다. 자신의 일이 끝나고 다른 작업의 결과를 처리한다.

 

728x90