JavaScript - Blocking과 Non-Blocking

김서영·2024년 2월 13일
0

Blocking과 Non-Blocking


처리되어야 하는 작업이 전체적인 작업 흐름을 막는 지에 대한 관점

블로킹(Blocking)

A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨준다

  1. A함수가 B함수를 호출하면 B에게 제어권을 넘김
  2. 제어권을 넘겨받은 B는 함수를 실행, A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춤
  3. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려줌
  • 동기적인 작업을 수행할 때 발생
  • 파일 시스템에서 파일을 읽거나 네트워크에서 데이터를 가져오는 작업을 수행할 때, 해당 작업이 완료될 때까지 다음 코드 실행을 멈춤
  • 프로그램의 실행 흐름을 차단하고 다른 작업이 실행되지 못하게 할 수 있음

논 블로킹(Non-Blocking)

A함수가 B함수를 호출해도 제어권은 그대로 자신이 가지고 있는다

  1. A함수가 B함수를 호출하면 B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있음
  2. A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행
  • 비동기적인 작업을 수행할때 발생
  • 파일을 비동기적으로 읽거나 네트워크 요청을 비동기적으로 보내는 작업은해당 작업이 완료되지 않더라도 다음 코드가 실행됨
  • 일반적으로 콜백 함수, Promise, async/await와 같은 메커니즘을 사용하여 처리됨
  • 한 작업이 완료될 때까지 기다리지 않고도 다른 작업을 수행할 수 있음
profile
개발과 지식의 성장을 즐기는 개발자

0개의 댓글

관련 채용 정보