Home 동기 비동기 / Blocking 과 Non-Blocking
Post
Cancel

동기 비동기 / Blocking 과 Non-Blocking

프로세스 수행 방식인 동기 비동기에 관해 간단히 정리한 글입니다.


동기(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)?


틀린점, 오타에 대한 것은 언제든지 알려주세요!

This post is licensed under CC BY 4.0 by the author.