ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동기, 비동기 처리방식
    서버 2023. 4. 4. 15:41
    반응형

    동기(synchronous : 동시에 일어나는)

    : 동시에 일어난다. 이를 프로그래밍적으로 해석하면 요청과 그 결과가 동시에 일어난다는 뜻입니다. 

    예를들어 클라이언트가 서버에 요청을 보낼 경우 서버는 시간이 얼마나 걸리던지 무조건 요청에 대한 결과를 반환해야한다는 것으로 해석할 수 있습니다.

     

    비동기(Asynchronous : 동시에 일어나지 않는)

    : 비동기는 동시에 일어나지 않는다. 요청과 결과가 동시에 일어나지 않아도 된다는 뜻입니다.

    예를들어 클라이언트가 서버에 요청을 보낼 경우 서버는 요청 작업을 수행하며 다른 작업도 수행할 수 있다는 것으로 해석할 수 있습니다.

     

     

     

    요청 작업을 수행하며 다른 작업도 수행할 수 있다??

    동기 비동기에 대해 공부하며 가장 이해가 안 갔던 부분입니다.

     

    동기 방식의 경우 하나의 쓰레드에서는 무조건 하나의 일만 처리해야합니다.

     

    반대로 비동기 방식의 경우 하나의 쓰레드에서 다수의 일을 처리할 수 있습니다.

     

    쓰레드가 작업을 처리하는 동안 작업은 여러가지 이유로 대기할 수 있습니다. 예를 들어, 입출력 작업을 수행하는 경우에는 디스크나 네트워크 등의 외부 자원에 대한 액세스가 필요하기 때문에 그 작업이 완료될 때까지 대기해야합니다.

     

    동기 방식의 경우 이 대기시간에 해당 스레드는 블로킹 상태가 되어 다른 작업을 처리하지 못합니다.

     

    하지만 비동기 방식은 블로킹 작업이 수행되는 동안에도 다른 작업을 수행할 수 있기 때문에 더욱 효율적으로 작업을 처리할 수 있습니다.

     

     

    무조건 비동기가 좋지않나??

    라고 생각했는데 꼭 그렇진 않습니다.

     

    비동기의 경우 코드가 복잡해지고, 예외 처리가 어렵고, 동기 작업보다 디버깅하기가 어렵다는 단점이 있습니다.

    하지만 병렬 작업 처리가 쉽고, 시스템 성능이 향상될 수 있습니다.

     

    동기 작업은 코드가 직관적이며 간단하게 작성할 수 있다는 장점이 있지만 작업이 완료될 때까지 기다려야 하기 때문에 시간이 오래 걸릴 수 있으며, 블로킹 작업이기 때문에 병렬 작업 처리가 어렵다는 단점이 있습니다.

    728x90
    반응형

    '서버' 카테고리의 다른 글

    서블릿 JSP MVC 차이점  (0) 2022.04.07

    댓글

Designed by Tistory.