프로세스 수행 방식인 동기 비동기에 관해 간단히 정리한 글입니다.
동기(Synchronous)란?
요청 후 결과(응답)를 기다리는 것
결과가 올때까지 다음 작업을 하지 않고 기다린다.
(작업1) - (작업2)
- 작업1이 끝나서 결과가 올때까지 작업2는 대기
1
2
3
4
5
6
7
8
console.log("1");
console.log("2");
console.log("3");
// 결과
// 1
// 2
// 3
어떤 프로세스의 결과가 다음 프로세스와 연관이 있을때는 동기적 방식으로 해야한다.
비동기(Asynchronous)란?
요청 후 바로 다음 작업을 시작한다.
(작업1) - (작업2) 작업1 요청 후 결과(응답)에 상관없이 다음 작업 시작
1
2
3
4
5
6
7
8
9
console.log("1");
setTimeout(() => {
console.log("2");
}, 3000);
console.log("3");
// 결과
// 1
// 3
// 2
- 왜 결과가 이렇게 나올까?
- setTimeout은 비동기 함수이기 때문이다.
- 동기적 방식의 코드를 모두 처리하고 나서 비동기적 코드를 실행한다.
자바스크립트의 비동기 동작 원리와 관련이 있다.
비동기 방식은 자원을 효율적으로 운용 가능하다.
동기와 비동기 방식(Asynchronous processing model)
즉 동기와 비동기는 프로세스의 완료여부 확인에 차이가 있다.
Blocking 과 Non-Blocking
동기/비동기와 함께 자주 나타나는 개념.
Blocking과 Non-Blocking은 제어권과 관련이 있다.
이해하기 쉽게 설명하자면
- Blocking : 어떤 작업이 진행 중일 때에는 (상위프로세스) 다른 작업 동시에 진행 불가능
(작업을 진행중일때 제어권 상실) - Non-Blocking : 어떤 작업이 진행 중일 때에도 (상위프로세스) 작업 동시에 진행
(제어권을 상실하지 않는다.)
Sync-Blocking(동기-블로킹)
동기 방식 - 작업은 순차적으로 진행
블로킹 방식 - 다른 작업 동시 진행 불가능
Sync-NonBlocking(동기-논 블로킹)
작업은 순차적으로 진행되나 상위 프로세스는 중간중간 자신의 작업 수행 가능.
Async-Blocking(비동기-블로킹)
참고 자료
동기(Synchronous)는 정확히 무엇을 의미하는걸까?
Async-NonBlocking(비동기-논블로킹)
동기 방식 - 작업은 완료여부와 상관없이 진행
블로킹 방식 - 다른 작업 동시 진행 가능
참고자료 (reference)
블로킹 Vs. 논블로킹, 동기 Vs. 비동기
동기식 처리 모델 vs 비동기식 처리 모델
동기(Synchronous)는 정확히 무엇을 의미하는걸까?
동기, 비동기 처리
자바스크립트 - 동기(Synchronous)? 비동기(asynchronous)?
틀린점, 오타에 대한 것은 언제든지 알려주세요!