[JavaScript] Synchronous, Asynchronous, Blocking, Non-blocking
글 작성자: 택시 운전사
반응형

Simplified matrix of basic Linux I/O models

해당 주제 관한 가장 유명한 표입니다. x축, y축의 각각의 의미를 알아보고 둘의 조합에 해당하는 예시를 이용해서 이해를 해보겠습니다.
Blocking / Non-blocking
Blocking / Non-blocking은 호출된 함수가 바로 return을 하는 지 마는 지가 관심사입니다.
Blocking I/O Model
호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서호출한 함수에게 제어권을 바로 돌려주지 않으면Blocking입니다.Wait Queue에 들어갑니다.
Non-blocking I/O Model
호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로return해서 제어권을 건내주어호출한 함수가 다른 일을 진행할 수 있도록 해주면Non-blocking입니다.Wait Queue에 들어가지 않는다.
Synchronous / Asynchronous
Synchronous / Asynchronous은 호출된 함수의 함수 작업 완료 여부를 누가 신경쓰는 지가 관심사입니다.
Synchronous
호출된 함수가호출된 함수의 작업 완료 후return을 기다리거나, 또는호출된 함수로부터 바로return받더라도 작업 완료 여부를호출된 함수가 스스로 계속 확인하며 신경쓰면Synchronous입니다.
Asynchronous
호출된 함수에게callback function을 전달해서,호출된 함수의 작업이 완료되면호출된 함수가 전달받은callback function을 실행하고,호출된 함수가 작업 완료 여부를 신경쓰지 않으면Asynchronous입니다.
Synchronous - Blocking
호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지면서, 작업 완료 여부를 호출된 함수가 스스로 계속 확인하는 방식입니다.
- file.read()
- file.write()
Asynchronous - Non-blocking
호출된 함수가 바로 return을 해서 제어권을 건내주어 호출한 함수가 다른 일을 진행할 수 있도록 해주고, 호출된 함수에게 callback function을 전달해서, 호출된 함수가 작업 완료 여부를 신경쓰지 않는 방식입니다.
- Node.js
Synchronous - Non-blocking
호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지면서 호출된 함수에게 callback function을 전달해서, 호출된 함수가 작업 완료 여부를 신경쓰지 않는 방식입니다.
Asynchronous - Blocking
호출된 함수가 바로 return을 해서 제어권을 건내주어 호출한 함수가 다른 일을 진행할 수 있도록 해주고 작업 완료 여부를 호출된 함수가 스스로 계속 확인하는 방식입니다.
- Node.js + mySQL
References
반응형
'Web > JavaScript' 카테고리의 다른 글
| [JavaScript] JavaScript와 Functional Programming 그리고 Closure (0) | 2019.08.10 |
|---|---|
| [JavaScript] JavaScript의 기본 원리 (0) | 2019.08.01 |
| [JavaScript] Arrow Functions (0) | 2019.06.01 |
| [JavaScript] var, const, let JavaScript 변수 키워드 (0) | 2019.05.30 |
| [JavaScript] ES6, ES8, ES2017, ECMAScript 이게 다 뭐시여...? (1) | 2019.05.30 |
댓글
이 글 공유하기
다른 글
-
[JavaScript] JavaScript와 Functional Programming 그리고 Closure
[JavaScript] JavaScript와 Functional Programming 그리고 Closure
2019.08.10 -
[JavaScript] JavaScript의 기본 원리
[JavaScript] JavaScript의 기본 원리
2019.08.01 -
[JavaScript] Arrow Functions
[JavaScript] Arrow Functions
2019.06.01 -
[JavaScript] var, const, let JavaScript 변수 키워드
[JavaScript] var, const, let JavaScript 변수 키워드
2019.05.30