일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- Java
- 파이썬
- Proxy
- 운영체제
- mongoDB
- Kafka
- Spring
- MSA
- JavaScript
- Algorithm
- IT
- 디자인 패턴
- OS
- MySQL
- design pattern
- 자료구조
- 컴퓨터구조
- C
- redis
- c언어
- Data Structure
- 자바
- 네트워크
- 알고리즘
- react
- JPA
- Heap
- Galera Cluster
- spring webflux
Archives
- Today
- Total
시냅스
Blocking vs Non-blocking , Synchronous vs Asynchronous 본문
Blocking
- 요청한 작업을 마칠 때까지 계속 대기한다.
- return 값을 받아야 끝난다.
- 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만드는 것
- e.g. 전화를 받을 때까지 계속 대기 후 답을 얻는다.
Non-blocking
- 요청한 작업을 즉시 마칠 수 없다면 바로 Return 한다.
- 결과가 완료 되었는지 지속적으로 확인한다.
- 호출된 함수가 바로 Return 해서 호출한 함수에게 제어권을 넘겨주고 호출한 함수가 다른 일을 할 수 있게 기회를 준다.
- e.g. 전화를 했는데 받지 않아 계속 반복 전화하다가 어느 순간 받아서 답을 얻는다.
Synchronous
- (현재 작업의 응답과 다음 작업의 요청이) 동시에 똑같이 진행된다.
- 작업 요청을 했을 때 요청의 결과값을 직접 받는 것이다.
- 호출한 함수가 작업 완료를 신경 쓴다.
- e.g. 송금을 하고 금액을 받는 상황은 동시에 이루어져야 한다.
Asynchronous
- (현재 작업의 응답과 다음 작업의 요청이) 동시에 진행되지 않는다.
- 작업 요청을 했을 때 요청의 결과값을 간접적으로 받는 것이다.
- 요청의 결과값과 return 값이 다를 수 있다.
- 호출된 함수 (callback 함수) 가 작업 완료를 신경쓴다.
- e.g. 각 학생들의 시험 제출과 선생님의 채점은 동기적이지 않아도 된다.
Synchronous + Blocking
- 순차적으로 진행되고, 블록킹 방식으로 다른 작업을 동시에 진행할 수 없다.
- 부모 프로세스는 자식 프로세스가 종료될 때까지 대기한 뒤 종료된다.
Synchronous + Non-blocking
- 부모프로세스가 자식프로세스를 실행시키고 자신의 일을 하면서 자식프로세스가 끝났는지 지속적으로 확인한다.
- 자식프로세스가 종료되면 자신도 종료된다.
Asynchronous + Non-blocking
- 부모프로세스는 자식프로세스에 task를 맡기고 신경쓰지 않고 자신의 task를 수행한다.
- 자식프로세스가 완료되면 콜백으로 알려주거나, 다른 프로세스에 task를 맡긴다.
Asynchronous + Blocking
- 하나의 프로세스를 블록킹시켜놓고 여러 개의 I/O를 다중화해서 받을 수 있게 한다.
<sys/select.h> select()
함수가 작동하는 원리이다.- 성능이 좋지 않고 일반적인 상황에선 잘 쓰이지 않는다.
필자 각주
- Sync / Asyc : 요청한 순서가 지켜지는가.
- blocking / non-blocking : 요청 받은 쪽에서 처리가 끝나기 전에 리턴을 해주는가 아닌가.
'네트워크' 카테고리의 다른 글
HTTP HyperText Transfer Protocol 정리 (0) | 2022.08.08 |
---|---|
TIL : 라우팅 프로토콜 (0) | 2021.12.23 |
TIL : 라우팅 (0) | 2021.12.19 |
TIL : 디폴트 게이트웨이 (0) | 2021.12.19 |
TIL : 라우터 (0) | 2021.12.18 |
Comments