[JavaScript] Blocking, Non-blocking, Sync, Async 이해하기
2023. 2. 7. 06:57ㆍFE/JavaScript
블록킹, 논블록킹은 프로세스 유휴 상태에 대한 개념이고 동기와 비동기는 프로세스 순서에 대한 개념이다.
Blocking vs Non-blocking
다른 주체가 작업할 때 자신의 제어권 유무로 볼 수 있다.
Blocking
호출한 함수가 호출된 함수에게 제어권을 넘기면 호출된 함수가 끝날 때까지 가지고 있다가 호출한 함수에게 되돌려 주는 경우
Non-blocking
호출한 함수가 호출된 함수에게 제어권을 넘기면 호출된 함수가 작업이 끝나지 않더라도 제어권을 호출한 함수에게 바로 넘겨주는 경우
Sync vs Async
결과를 받았을 때 순서와 결과에 관심 유무로 판단할 수 있다.
Synchronous
호출된 함수의 실행 결과, 종료를 호출한 함수가 관심을 가지고 있는 경우
Asynchronous
호출된 함수의 실행 결과, 종료를 호출한 함수가 관심을 가지지 않는 경우
Sync, Async, Blocking, Non-Blocking
| Blocking | Non-Blocking | |
| Sync | 다른 작업이 시작되는 동안 동작하지 않는다. 결과를 반환하면 해당 작업을 바로 처리한다. |
다른 작업이 있어도 제어권을 가지고 작업을 하다가 중간중간 다른 작업의 결과를 확인하고 다른 작업의 결과가 끝나면 결과를 가지고 작업을 처리한다. |
| Async | 다른 작업이 시작되는 동안 동작하지 않는다. 다른 작업의 결과를 바로 처리하지 않아도 된다. |
다른 작업이 시작하여도 자신이 하던 작업을 멈추지 않는다. 자신의 일이 끝나고 다른 작업의 결과를 처리한다. |
728x90
'FE > JavaScript' 카테고리의 다른 글
| [JavaScript] CommonJS, ES Module 이해하기 (0) | 2023.02.16 |
|---|---|
| [JavaScript] 이벤트 바인딩 (0) | 2023.02.07 |
| [JavaScript] MSW로 API Mocking 하기 (0) | 2023.02.03 |
| [JavaScript] 자바스크립트에서 비동기 작업은 어떻게 동작할까? (0) | 2023.02.01 |
| [Javascript] 함수와 일급 객체 (0) | 2022.10.24 |