[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