[Javascript] 비동기를 이해하기 위한 개념 (1) - Blocking / Non Blocking & Sync/ Async

Yeojin Choi·2022년 1월 4일
0

Javascript

목록 보기
7/11

Blocking / Non Blocking & Sync/ Async

Blocking / Non Blocking

  • Point : 호출되는 함수가 바로 리턴하느냐 마느냐
  • 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수를 대기하게 만든다면 Block
  • 호출된 함수가 자신이 할 일을 채 마치지 않았더라도 바로 제어권을 건네주어(return) 호출한 함수가 다른 일을 진행할 수 있도록 해주면 Non-block

Synchronous / Asynchronous

  • Point : 호출된 함수의 작업 완료 여부를 누가 신경쓰냐가 관심사
  • 호출된 함수의 수행 결과 및 종료를 호출한 함수가(호출된 함수뿐 아니라 호출한 함수도 함께) 신경 쓰면 Synchronous
  • 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경 쓰고 처리(as a callback fn.)하고, 호출하는 함수는 작업 완료 여부를 신경쓰지 않으면 Asynchronous

Sync-Blocking : Blocking & Synchronous

  • 결과가 처리되어 나올때까지 기다렸다가 return 값으로 결과를 전달한다.

Async-NonBlocking : Non-blocking & Asynchronous

  • 작업 요청을 받아서 별도의 프로세서에서 진행하게 하고 바로 return(작업 끝)한다.
  • 결과는 별도의 작업 후 간접적으로 전달(callback)한다.

Sync-NonBlocking : Non-blocking & Synchronous

  • 호출된 함수가 호출한 함수에게 제어권을 바로 건네주어(return) 호출한 함수가 작업을 할 수 있게 되지만(Non-blocked) 호출되는 메서드의 작업 완료 여부를 계속 문의한다.
  • 결과가 없다면 바로 return한다.결과가 있으면 바로 결과를 return 한다.(결과가 생길때까지 계속 완료 되었는지 확인)

Async - Blocking : Blocking & Asynchronous

  • 호출되는 함수가 바로 return하지 않고, 호출하는 함수는 작업 완료 여부를 신경쓰지 않는다.
  • 별다른 장점이 없어 일부러 사용할 필요는 없지만 하나라도 Blocking으로 동작하는 작업이 포함되어 있다면 의도하지 않게 Blocking-Async로 동작할 수 있다.

References

profile
프론트가 좋아요

0개의 댓글