동기(Synchronous)
- 함수를 호출하고 호출된 함수의 작업이 완료된 후의 return을 기다리림.
비동기(Asynchronous)
- 함수를 호출할 때 callback 함수를 같이 전달해 작업이 완료되면 callback을 실행.
블로킹(Blocking I/O)
- 호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 만듦.
논블로킹(NonBlocking I/O)
- 호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 주어 다른일을 할 수있게 함.
정리
-
Blocking/NonBlocking은 호출되는 함수가 바로 리턴하느냐 마느냐가 관심사
- 바로 리턴하지 않으면 Blocking
- 바로 리턴하면 NonBlocking
-
Synchronous/Asynchronous는 호출되는 함수의 작업 완료 여부를 누가 신경쓰냐가 관심사
- 호출되는 함수의 작업 완료를 호출한 함수가 신경쓰면 Synchronous
- 호출되는 함수의 작업 완료를 호출된 함수가 신경쓰면 Asynchronous
-
성능과 자원의 효율적 사용 관점에서 가장 유리한 모델은 Async-NonBlocking 모델이다.
'개발기본' 카테고리의 다른 글
개발자가 갖추어야할 덕목 (0) | 2020.02.14 |
---|---|
개발문서화는 이것만하자 (0) | 2020.02.12 |
웹브라우저의 역할 (0) | 2019.12.25 |
CORS (0) | 2019.12.10 |
스트림(stream) 이란? (0) | 2019.11.14 |