각 단어의 의미
1. Blocking
- 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
2. NonBlocking
- 다른 주체의 작업에 관련없이 자신의 작업을 하는 것
3. Synchronous
4. Asynchronous
- 하나의 요청이 끝나기도 전에, 다른 요청을 동시에 처리할 수 있는 것
📜 자세히 알아보기
Blocking & Non-blocking
호출된 함수
가 호출한 함수
에게 제어권을 건네주는 유무의 차이
상황) 함수 A, B가 있다. A안에서 B를 호출했다고 가정한다. 즉, 호출한 함수는 A이고 호출된 함수는 B이다. 현재 B가 호출되면서 B의 일을 진행해야 하는 상황이다. (즉 제어권이 B에게 주어진 상황)
- Blocking
함수 B가 할 일을 다 마칠 때까지 제어권을 갖는다. A는 B가 다 마칠 때까지 기다려야 한다.
- Non-blocking
함수 B가 할 일을 다 마치지 않았더라도 A에게 제어권을 바로 넘겨준다. A에게 제어권을 바로 넘겨준다. A는 B를 기다리면서도 다른 일을 진행할 수 있다.
Synchronous & Asynchronous
일을 수행 중인 동시성
에 주목해야 함
상황) 함수 A, B가 있다. A안에서 B를 호출했다고 가정한다. 즉, 호출한 함수는 A이고 호출된 함수는 B이다.
-
Synchronous
함수 A는 함수 B가 일을 하는 중에 기다면서, B의 상태가 어떤지 계속 체크한다.
-
Asynchronous
함수 B의 수행 상태를 A가 신경쓰지 않고 B 혼자 직접 신경쓰면서 처리한다. (*Callback)
+) ✔ Callback
이란?
- 코드를 통해 명시적으로 호출하는 함수가 아니라, 함수를 등록한 다음 어떤 이벤트가 발생했거나 특ㅈㅇ 시점에 도달했을 때 시스템에서 호출하는 함수를 말한다. 즉, 다른 함수가 실행을 끝낸 뒤 실행되는 함수(나중에 호출되는 함수)를 말한다.
📍 총정리 그림
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!