ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동기, 비동기 & 블로킹, 논블로킹
    ETC 2023. 10. 24. 00:03

     

    • 동기(Synchronous) : 요청한 작업에 대해 완료 여부를 따져서 순차적으로 수행하는 것 
    • 비동기(Asynchronous) : 요청한 작업에 대해 완료여부를 따지지 않고 작업을 수행

     

    동기일 경우 Process A는 Process B가 완료된 후에 response를 받고 작업을 계속 진행한다

    비동기일 경우 Process A는 Process B가 작업중에도 계속 작업을 진행하고 Process B가 작업을 끝내면 response를 받는다. 

     

    비동기로 작업을 수행할 시에, 멀티태스킹이 가능하기 때문에 더 빠른 시간 내에 일들을 효율적으로 처리할 수 있는 장점을 가지고 있다. 이러한 비동기 방식은 멀티쓰레드멀티프로세스와 같은 방법으로 구현이 가능하다. 

     

    • 블로킹(Blocking) : 함수 호출시 제어권을 넘겨준다
    • 논 블로킹(Non-Blocking) : 함수가 호출되어도 해당함수가 다른 함수에게 제어권을 넘겨주지 않는다. 

    Non- Blocking

     

    동기 & 비동기 & 블로킹 & 논블로킹 의 조합

    1. Blocking  + Synchronous

    - Sync Blocking 조합은 다른 작업이 진행되는 동안 자신의 작업을 처리하지 않고 (Blocking), 다른 작업의 완료 여부를 바  로 받아 순차적으로 처리하는 (Sync) 방식이다. 다른 작업의 결과가 자신의 작업에 영향을 주는 경우에 활용할 수 있다.

     

    2. Blocking  + Asynchronous

    -  Async Blocking 조합은 다른 작업이 진행되는 동안 자신의 작업을 멈추고 기다리는 (Blocking), 다른 작업의 결과를 바로 처리하지 않아 순서대로 작업을 수행하지 않는 (Async) 방식이다

     

    3. Non-Blocking + Synchronous

    - Sync Non-Blocking 조합은 다른 작업이 진행되는 동안에도 자신의 작업을 처리하고 (Non Blocking), 다른 작업의 결과를 바로 처리하여 작업을 순차대로 수행 하는 (Sync) 방식이다.

     

    4. Non-Blocking + Asynchronous

     -  Async Non Blocking 조합은 다른 작업이 진행되는 동안에도 자신의 작업을 처리하고 (Non Blocking), 다른 작업의 결과를 바로 처리하지 않아 작업 순서가 지켜지지 않는 (Async) 방식이다. 다른 작업의 결과가 자신의 작업에 영향을 주지 않은 경우에 활용할 수 있다.

     

    일반적으로 Async Blocking 과 Sync Blocking은 거의 유사하다.

     

    1,4번의 특징만 기억하면 개발에 큰 도움이 될거같다. 

    'ETC' 카테고리의 다른 글

    Spring Garbage collection 튜닝  (1) 2024.03.30
    이미지 파일의 종류와 사용  (0) 2023.08.31
Designed by Tistory.