- 동기 & 비동기 : 프로세스의 수행 순서 보장에 대한 매커니즘
- 동기 : 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작
- 비동기 : 시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음
- 블록킹 & 논블록킹 : 프로세스의 유휴 상태에 대한 개념
- 블록킹 : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면
다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것 - 논블록킹 : 다른 주체의 작업에 관련없이 자신의 작업을 하는 것
- 블록킹 : 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면
동기
Synchronous
- 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있는 방식
(A작업이 모두 진행 될때까지 B작업은 대기해야한다.) - 요청과 결과가 한 자리에서 동시에 일어난다.
- A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞춘다.
- 장점
:설계가 매우 간단하고 직관적 - 단점
:결과가 주어질 때까지 아무것도 못하고 대기해야 한다.
비동기
Asynchronous
- 반대로 요청을 보냈을 때
응답 상태와 상관없이 다음 동작을 수행 할 수 있는 방식
(A작업이 시작하면 동시에 B작업이 실행된다. A작업은 결과값이 나오는대로 출력된다.) - 비동기적 코드의 실행 결과는
동기적 코드가 전부 실행 되고나서 값을 반환한다. - 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
- 장점
:결과가 주어지는데 시간이 걸리더라도
그 시간 동안에 다른 작업을 할 수 있으므로 자원들을 효율적으로 사용 할 수 있다. - 단점
:동기보다 복잡한 설계
블로킹
Blocking
- A함수가 B함수를 호출하면 B에게 제어권을 넘긴다.
- 제어권을 넘겨받은 B는 열심히 함수를 실행한다. A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다.
- B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.
논블로킹
Non-Blocking
- A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다.
- A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다.
동기&비동기 + 블로킹&논블로킹 조합
(참고)
- 동기, 비동기
- 동기, 비동기 처리
- 109dev 2021. 1. 15.
- [Java]동기와 비동기 방식(Asynchronous processing model)
- [10분 테코톡] 🎧 우의 Block vs Non-Block & Sync vs Async
- [운영체제] 동기와 비동기, 블로킹과 논블로킹
- 동기/비동기 vs 블로킹/논블로킹
- 블로킹(Blocking)과 논 블로킹(Non-Blocking)이란 무엇인가?!
- 동기 & 비동기 / 블로킹 & 논블로킹 💯 완벽 이해하기
공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.