ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Javascript] Blocking / Non-Blocking vs Sync / Async
    프로그래밍 언어/JavaScript 2024. 1. 17. 23:40

    개요

    • 배우는 목적
    • Blocking / Non-Blocking
    • Sync / Async
    • 정리

     

    배우는 목적

    기본적으로 블록과 동기가 같은 의미인가에 대해서 아니라고 확실히 대답할 수 있을만큼의 지식을 기르는 것에 있다. 자칫 오해할 수 있는 개념이기에 조금 정립하고 넘어가자.

    Blocking , Non-Blocking

    제어권이 있는지 없는지에 따라서 Blocking과 Non-Blocking으로 나뉜다.

     

    Blocking

    자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 다른 작업이 끝날 때까지 기다렸다가 자신의 작업을 시작하는 것
    즉, 호출된 함수는 자신이 할 일을 모두 마칠때까지 제어권을 계속 가지고 있으며 호출한 함수에게 바로 돌려주지 않는 상황

     

    Non-Blocking

    다른 주체의 작업에 관련 없이 자신의 작업을 하는 것
    즉, 호출된 함수는 자신이 할 일을 모두 마치지 않았더라도 바로 제어권을 호출한 함수에게 건네주어 다른 일을 진행할 수 있도록 해주는 상황

     


     

    Sync , Async

    결과를 돌려주었을 때 순서와 결과에 관심이 있는지 없는지로 판단

     

    Sync

    동기라는 의미로 작업을 동시에 수행하거나, 동시에 끝나거나, 끝나는 동시에 시작함을 의미한다
    즉, 호출된 함수의 수행 결과 및 종료를 호출한 함수와 함께 신경 쓰는 경우

     

    Async

    시작과 종료가 일치하지 않고 끝나는 동시에 시작을 하지 않음을 의미한다.
    즉, 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 쓰고 처리하는 경우

     


    정리

     

    우리가 일반적으로 알고 있는 동기 방식이 Sync-Blocking방식이며 비동기 방식은 Async-NonBlocking방식이다.

    Sync-Non-Blocking은 거의 사용되지 않고 어쩌다 가끔 한번씩 나오겠지만 Async-Blocking의 경우에는 일어나면 안되는 거의 최악의 상황이라고 보면 된다.

    제어권의 개념과 순서와 결과에 대한 관심을 잘 구분해서 2가지 개념을 구분해서 이해하면 좋을 것 같다.

    댓글

Designed by Tistory.