블로킹(Blocking)과 논블로킹(Non-blocking)

Lys·2023년 10월 12일
0

네트워크

목록 보기
13/19

블로킹(Blocking)이란?


위 사진 처럼 블로킹의 경우 A에서 B함수를 호출 할 때 제어권을 A가 B에게 넘겨준다. 그렇게 되면 A의 경우에는 제어권을 돌려받기 전까지는 실행을 멈추게 된다. 즉 자신의 작업을 진행하다 다른 주체의 작업이 시작되면 자신의 작업을 멈추고 해당 작업을 기다렸다가 다시 자신의 작업을 시작한다.

ex)

function start() {
  console.log("완료"); 
}
console.log("시작");
start();
console.log("다음 작업");
/*
  결과
    시작 -> 완료 -> 다음작업
*/

논블로킹(Non-blocking)이란?


위의 사진처럼 A가 B를 호출하더라도 제어권을 그대로 A가 가지고 있기 때문에 B를 호출한 이후에도 A의 코드를 계속 실행된다. 즉 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것을 의미한다.

ex)

function start() {
  console.log("완료"); 
}
console.log("시작");
setTimeout(start,0);
console.log("다음 작업");
/*
  결과
    시작 -> 다음작업 -> 완료    
*/

동기/비동기 + 블로킹/논블로킹의 조합 종류

    1. Sync Blocking(동기 + 블로킹)
    1. Async Blocking(비동기 + 블로킹)
    1. Sync Non-Blocking(동기 + 논블로킹)
    1. Async Non-Blocking(비동기 + 논블로킹)

Sync Blocking(동기 + 블로킹)

  • 다른 작업이 진행되는 동안 자신의 작업을 처리하지 않고(블로킹)
    다른 작업의 완료 여부를 받아 순차적으로 처리하는(동기) 방식으로
    다른 작업의 결과가 자신의 작업에 영향을 주는 경우에 활용할 수 있다.
  • 자주 쓰이는 조합 중 하나이다.
  • 모든 실행과 흐름이 순차적이기 때문에 개발자가 프로그램을 제어하기 쉽다.
  • 상위 프로세스는 하위 프로세스의 작업 완료 여부를 신경쓴다.

Async Blocking(비동기 + 블로킹)

  • 다른 작업이 진행되는 동안 자신의 작업을 멈추고 기다리는(블로킹)과 다른 작업의 결과를 바로 처리하지 않아 순서대로 작업을 수행하지 않는(비동기)방식이다.
  • 상위 프로세스는 하위 프로세스의 작업 여부를 신경쓰지 않는다.
  • 블로킹 방식이므로 하위 프로세스의 작업이 완료되지 않으면 상위 프로세스는 다른 작업을 할 수 없다.
  • sync-blocking과 성능의 차이가 거의 없기 때문에 실무에서 잘 사용하지 않는다.

Sync Non-Blocking(동기 + 논블로킹)

  • 다른 작업이 진행되는 동안에도 자신의 작업을 처리하고(논블로킹)
    다른 작업의 결과를 바로 처리하여 작업을 순차대로 수행하는(동기) 방식이다.
  • 상위 프로세스는 하위 프로세스의 작업 완료 여부를 신경쓴다.
  • 논블로킹 방식이므로 하위 프로세스는 작업 완료 여부와 상관 없이 상위 프로세스는 다른 작업을 할 수 있다.

Async Non-Blocking(비동기 + 논블로킹)

  • 다른 작업이 진행 되는 동안에도 자신의 작업을 처리하고(논블로킹)
    다른 작업의 결과를 바로 처리하지 않아 작업 순서가 지켜지지 않는(비동기)
  • 자주 사용하는 조합중 하나이다.
  • 성능과 자원의 효울면에서 가장 우수하다.
  • 상위 프로세스는 하위프로세스의 작업 완료 여부를 신경쓰지 않는다.
  • 논블로킹 방식이므로 하위 프로세스의 작업 완료 여부와 상관 없이 상위 프로세스는 다른 작업을 할 수 있다.

블로킹과 논블로킹의 차이

블로킹과 논블로킹의 차이 는 제어권의 주체에 있다.

  • 블로킹 : 제어권을 넘기고 제어권 다시 돌려 받을 때까지 기다렸다가 돌려 받고 동작을 시작한다.
  • 논블로킹 : 제어권을 넘기지 않고 동작을 한다.

🙇‍ 참고 사이트 🙇‍

https://jaehoney.tistory.com/242
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC#%EB%8F%99%EA%B8%B0synchronous_/_%EB%B9%84%EB%8F%99%EA%B8%B0asynchronous
https://tang25.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B3%BC%ED%95%99-CS%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9-%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9

0개의 댓글

관련 채용 정보