ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sync & Async & Blocking & Non-Blocking
    WEB & CS 2023. 8. 11. 20:30
    • Sync
      • 작업들의 순서가 지켜진다.
    • Async
      • 작업의 순서가 지켜지지 않는다.
    • Blocking
      • 작업의 제어권을 빼앗긴 상태를 말한다.
    • Non-Blocking
      • 작업의 제어권을 별도로 얻는다.
    • Sync & Async
      • 요청한 순서가 지켜지는지에 대한 여부로 차이를 설명할 수 있다.
    • Blocking & Non-Blocking
      • 제어권의 유무로 로직이 실행 가능한지(Non-Block), 불가능한지(Block)로 판단한다.

     

     

    code_a, code_b, code_c라는 코드가 순서대로 있다고 가정하자.

    code_a....
    
    code_b....
    
    code_c....

     

     

    * Sync 동작방식

    1. code_a 실행
    2. code_a 끝
    3. code_b 실행
    4. code_b 끝
    5. code_c 실행
    6. code_c 끝

     

    * Async 동작방식

    - 위의 1~6번까지의 순서가 의미가 없다.
    - code_a가 실행되고 바로 code_b가 실행되어 바로 종료될 수 있고 code_c가 실행되고 code_a가 끝나고 최종적으로 code_c가 끝날수 있다.

    1. code_a 실행
    2. code_b 실행
    3. code_b 끝
    4. code_c 실행
    5. code_a 끝
    6. code_c 끝

     

    * Blocking 동작방식

    - 3개의 프로세스를 진행하는동안 제어권을 해당 로직에 부여한다.
    - 그래서 제어권을 가지고 있는 로직이 끝나지 않으면 제어권을 잃은 로직은 실행되지 않는다.

     

    * Non-Blocking 동작방식

    - 로직을 수행하는 동안 작업 완료 여부와 무관하게 제어권을 넘겨주지 않는다.
    - 그래서 다른 로직을 수행하면서 자신의 로직을 계속 실행할 수 있다.
    - 필요한 경우에는 요청한 작업의 진행도를 확인받을 수 있다.

     

    * Sync Blocking (동기 + 블로킹) 동작방식

    1. 개발자가 code_a를 실행
    2. 완료될 때까지 다음 코드 실행이 안된다.
    3. code_a 완료
    4. 개발자가 code_b를 실행
    5. 완료될 때까지 다음 코드 실행이 안된다.
    6. code_b 완료
    7. code_c도 마찬가지....

     

    * Async Blocking (비동기 + 블로킹) 동작방식

    1. Async방식으로 쿼리를 호출한다.
    2. 쿼리를 처리하면서 개발코드에게 제어권을 Block한다.
    3. 코드를 계속 수행할 수 있지만, 제어권이 있는 쿼리가 완료될 때까지 기다려야한다.

     

    * Sync Non-Blocking (동기 + 논블로킹) 동작방식

    기존의 코드도 수행하고(Non-Block) 다른 코드의 결과를 기다리며 부가적인 코드를 순차적으로 진행(Sync)
    1. main코드를 수행하며 code_a를 실행
    2. code_a에게 완료 응답을 받기전까지 code_b 실행하지 않음
    3. code_a가 완료되면 code_b를 실행
    4. main코드를 수행하며 code_c도 대기 후 code_b가 완료되면 진행...

     

    * Async Non-Blocking (비동기 + 논블로킹) 동작방식

    1. code_a, code_b, code_c를 동시에 실행 명령
    2. 완료되는 시간에 상관없이 main코드를 실행하며 기다림
    3. 3개의 각각의 코드가 완료되면 응답을 받음

Designed by Tistory.