728x90
반응형
개발을 하다보면 수도없이 들어보았을 동기와 비동기에 대해 다뤄보겠다.
동기(Synchronous)
- 동기 처리 방식은 직렬적으로 작업을 수행한다.(순차적 실행)
- 하나의 작업(Thread1)이 수행할 동안 다음 작업(Thread2)는 대기한다.
- Thread1이 종료되면 Thread2을 수행한다.
- 하나의 작업이 종료될때까지 다음 작업들은 Blocking(작업중단)된다.
비동기(asynchronous)
- 비동기 처리 방식은 병렬적으로 작업을 수행한다.
- 하나의 작업(Thread1)이 작업을 시작하고 종료되기를 기다리지 않고 다른 작업을 처리할 수 있다.
- 하나의 작업이 종료되지 않은 상태여도 대기하지 않는다.(non-Blocking)
Blocking
- 요청한 작업을 마칠때까지 계속 대기한다.
- Thread관점에서 요청한 작업을 종료할때까지 계속 대기하며 return 값을 받을때까지 Thread를 계속 사용/대기 한다.
Non-Blocking
- 요청한 작업을 즉시 마칠 수 없다면 즉시 return 한다.
- Thread관점에서 하나의 Thread가 여러개의 I/O 처리가 가능하다.
동기와 blocking, 비동기랑 non-blocking이 비슷해보이지만 차이가 있다.
- blocking/non-blocking
- 호출되는 함수가 바로 return처리를 하는지 마는지에 대해
- 동기/비동기
- 호출되는 함수의 작업완료 여부에 대해
'http' 카테고리의 다른 글
[DNS] DNS란 무엇인가 (0) | 2023.01.13 |
---|