-
[Javascript] Blocking / Non-Blocking vs Sync / Async프로그래밍 언어/JavaScript 2024. 1. 17. 23:40
개요
- 배우는 목적
- Blocking / Non-Blocking
- Sync / Async
- 정리
배우는 목적
기본적으로 블록과 동기가 같은 의미인가에 대해서 아니라고 확실히 대답할 수 있을만큼의 지식을 기르는 것에 있다. 자칫 오해할 수 있는 개념이기에 조금 정립하고 넘어가자.
Blocking , Non-Blocking
제어권이 있는지 없는지에 따라서 Blocking과 Non-Blocking으로 나뉜다.
Blocking
자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
즉, 호출된 함수는 자신이 할 일을 모두 마칠때까지 제어권을 계속 가지고 있으며 호출한 함수에게 바로 돌려주지 않는 상황Non-Blocking
다른 주체의 작업에 관련 없이 자신의 작업을 하는 것
즉, 호출된 함수는 자신이 할 일을 모두 마치지 않았더라도 바로 제어권을 호출한 함수에게 건네주어 다른 일을 진행할 수 있도록 해주는 상황
Sync , Async
결과를 돌려주었을 때 순서와 결과에 관심이 있는지 없는지로 판단
Sync
동기라는 의미로 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미한다
즉, 호출된 함수의 수행 결과 및 종료를 호출한 함수와 함께 신경 쓰는 경우Async
시작과 종료가 일치하지 않고 끝나는 동시에 시작을 하지 않음을 의미한다.
즉, 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 쓰고 처리하는 경우
정리
우리가 일반적으로 알고 있는 동기 방식이 Sync-Blocking방식이며 비동기 방식은 Async-NonBlocking방식이다.
Sync-Non-Blocking은 거의 사용되지 않고 어쩌다 가끔 한번씩 나오겠지만 Async-Blocking의 경우에는 일어나면 안되는 거의 최악의 상황이라고 보면 된다.
제어권의 개념과 순서와 결과에 대한 관심을 잘 구분해서 2가지 개념을 구분해서 이해하면 좋을 것 같다.
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[Javascript] 즉시 실행 함수 IIFE (0) 2024.01.18 [Javascript] strict mode (0) 2024.01.18 [CS Study] 화살표 함수와 일반 함수 (0) 2024.01.08 [CS Study] 스코프, 스코프체인 (0) 2024.01.02 [Javascript] this 예약어 (0) 2023.12.07