728x90
동기/ 비동기 : `요청한 작업을 순차적으로 수행할건가...` 에 대한 관점
블록킹/논블록킹 : `실행 중인 작업이 완료될 때까지 다른 작업을 대기시킬 건지... 대기하지 않고 실행할지...` 에 대한 관점
1. 동기(Synchronous) vs 비동기(Asynchronous)
Synchronous
- 작업의 시작과 끝, 그리고 결과 처리가 순차적으로 진행되는 방식
- 한 작업이 시작되면 해당 작업이 완료될 때까지 다른 작업은 대기
Asynchronous
- 작업의 시작과 끝, 그리고 결과 처리가 독립적으로 이루어지는 방식
- 한 작업이 시작되어도 결과를 기다리지 않고 다른 작업을 수행
ex. A, B, C 작업 있을 때
Synchronous : `A → B→ C` 순차 진행
Asynchronous : `C → B→ A` or `A → C→ B` 등 무작위 진행
2. 블로킹(Blocking) vs 논블로킹(Non-blocking)
Blocking
- 호출된 작업이 완료될 때까지 제어권을 호출한 코드에 유지되는 방식
- 한 작업이 완료되지 않으면 다음 작업을 실행 불가
Non-blocking
- 호출된 작업이 완료될 때까지 대기하지 않고, 다른 작업을 실행할 수 있는 방식
- 작업이 완료되지 않더라도 대기하지 않고 다른 작업을 실행
ex. A, B, C 작업 있을 때
Blocking : A 끝나고 B 진행... B 끝나고 C 진행...
Non-blocking : A 진행하면서 B 진행... B 진행하면서 C 진행...
- Synchronous Blocking : 작업이 시작되면 작업이 완료될 때까지 제어권을 가진 코드는 다른 작업을 실행하지 않고 대기
ex. 함수 호출
- Synchronous Non-blocking : 작업이 시작되면 작업이 완료될 때까지 대기하지 않고, 제어권을 가진 코드는 다른 작업을 실행 ex. 멀티스레딩을 이용한 논블로킹 작업
- Asynchronous Blocking : 작업이 시작되면 작업이 완료될 때까지 제어권을 가진 코드는 다른 작업을 실행하지 않고 대기 차이점 : 비동기적으로 호출하여 결과를 처리
- Asynchronous Non-blocking : 작업이 시작되면 작업이 완료될 때까지 대기하지 않고, 제어권을 가진 코드는 다른 작업을 실행 차이점 : 작업 결과는 콜백이나 프로미스와 같은 방식으로 처리
👩💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹
동기/비동기 & 블로킹/논블록킹 프로그래밍에서 웹 서버 혹은 입출력(I/O)을 다루다 보면 동기/비동기 & 블로킹/논블로킹 이러한 용어들을 접해본 경험이 한번 쯤은 있을 것이다. 대부분 사람들은
inpa.tistory.com
반응형
'개발 만담 > 헷갈리는 개념' 카테고리의 다른 글
Path Variable VS Query Parameter (0) | 2023.08.31 |
---|