오늘은 동기, 비동기 그리고 블록과 논블록의 차이점에 대해서 알아보도록 하겠습니다.
동기와 비동기의 차이
동기 (synchronous)
- 정의
- 요청에 대해 결과값을 기다렸다 처리하는 것을 말합니다.
- 여기서 요청이란 API, 함수에 대한 호출을 말합니다.
- 요청에 대해 결과값을 기다렸다 처리하는 것을 말합니다.
- 장점
- 설계가 매우 간단하고 직관적이다.
- 단점
- 결과가 주어질 때까지 기다려야 하므로, 여러 요청들을 빠르게 처리할 수 없다.
비동기 (asynchronous)
- 정의
- 요청의 결과값을 기다리지 않고 처리하는 것을 말합니다.
- 장점
- 요청을 보낸 직후, 바로 다른 작업을 수행할 수 있습니다.
- 단점
- 동기식보다 설계가 복잡합니다.
블록과 논블록의 차이
블록 (block)
- 특징
- 동기에서 파생된 개념입니다.
- 정의
- 동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 쓰레드에 대한 제어권 획득을 기다리며, 응답을 기다리는 상태를
블록
이라고 합니다.
- 동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 쓰레드에 대한 제어권 획득을 기다리며, 응답을 기다리는 상태를
논블록 (non-block)
- 특징
- 비동기에서 파생된 개념입니다.
- 정의
- 비동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 응답을 기다리지 않고 제약없이 쓰레드에 대한 제어권을 획득하여, 자유롭게 사용할 수 있는 상태를
논블록
이라고 합니다.
- 비동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 응답을 기다리지 않고 제약없이 쓰레드에 대한 제어권을 획득하여, 자유롭게 사용할 수 있는 상태를
동기, 비동기 그리고 블록, 논블록
Sync-Blocking
블록 상태에 대한 설명과 일치합니다.
Sync-NonBlocking
요청이 논블록 상태이기 때문에, 호출한 쪽에선 쓰레드에 대한 제어권을 바로 획득합니다. 하지만 응답 결과값을 확인 될 때까지 다른 작업을 수행할 수 없기 때문에, 완료될 때까지 요청이 완료됐는지 계속 확인합니다.
Async-Blocking
Sync-Blocking과 동일하게 동작합니다.
Async-NonBlocking
비동기로 처리되므로 요청을 처리하는 동안, 쓰레드의 제어권을 획득해 다른 작업을 처리할 수 있습니다.
반응형
댓글