반응형
#제어권?
- 자신의 코드를 실행할 권리 같은 것이다.
- 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다.
#결과 값을 기다린다는 것
- A함수에서 B함수를 호출했을 때, A함수가 B함수의 결과값을 기다리느냐의 여부를 의미
Blocking(블로킹)과 Non-blocking(논블로킹)
블로킹과 논블로킹은 A함수가 B함수를 호출했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다.
즉, 제어의 관점
1. 블로킹
즉, 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
예시) 블로킹은 A함수가 B함수를 호출하면, 제어권 A가 호출한 B함수에 넘겨준다.
- A함수 ⇒ B함수 호출하면 B함수에게 제어권이 넘어간다
- 제어권을 받은 B함수가 실행되면, 제어권이 넘어간 A함수는 함수 실행을 멈춘다.
- B함수는 실행이 끝나면 가져온 제어권을 A에게 돌려준다.
2. 논블로킹
즉, 다른 주체의 작업에 관련없이 자신의 작업을 하는 것
예시) 논블로킹은 A함수가 B함수를 호출해도 제어권은 자신이 갖고 있다.
- A함수 ⇒ B함수 호출하면, 제어권은 A가 그대로 갖고 있다.
- A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행
3. Synchronous
동기라는 뜻. 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미
4. Asynchronous
비동기라는 뜻. 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미
동기와 비동기는 순서와 결과에 관심이 있다. 순서와 결과(처리)의 관점
Blocking | Non-Blocking | |
Sync | 블로킹 - 제어권 Sync - 결과 자바에서 입력시, Blocking/Sync로 처리 |
Non-Blocking / Sync 중간중간 물어본다, 결과가 나올 때 까지 물어보면서 진행, 그 후 끝나면 그 결과를 가지고 진행 게임 시, 로드율을 보여줄 때 쓸 수 있다. |
Async | Blocking / Async | Non-Blocking / Async 각자 처리하고, 추후 자신의 일이 끝나면 Async는 일을 처리. api 요청시 사용 |
https://www.youtube.com/watch?v=oEIoqGd-Sns
반응형
'JavaScript' 카테고리의 다른 글
Nullish coalescing operator === ?? (0) | 2022.07.16 |
---|---|
you are missing the point of promises 요약 (0) | 2022.06.24 |
이터러블, 이터레이터란? (0) | 2022.05.21 |
왜 body 태그 아래에 script를 놓아야할 (0) | 2022.05.11 |
가비지 컬렉션 - garbage collection (0) | 2022.05.07 |