ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] 동기 비동기 프로그래밍
    Computer Science/CS 2022. 9. 7. 23:47
    728x90

    동기(Synchronous)

    • 현재 작업의 응답이 끝남과 동시에 다음 작업이 요청된다.
    • 함수를 호출하는 곳에서 호출되는 함수가 결과를 반환할 때까지 기다린다.
    • 작업 완료 여부를 계속해서 확인한다.

     

    비동기(ASynchronous)

    • 현재 작업의 응답이 끝나지 않은 상태에서 다음 작업이 요청된다.
    • 함수를 호출하는 곳에서 결과를 기다리지 않고, 다른 함수(callback)에서 결과를 기다린다.
    • 작업 완료 여부를 확인하지 않는다.

    (싱글쓰레드에서 비동기적인 프로그래밍을 한다고 해서 멀티쓰레드처럼 동시 다발적인 실행이 가능해지는 것은 아니다.)

     

     

    블록킹(Blocking) 

    • 블록킹 (Blocking) : 자신의 수행결과가 끝날 때까지 제어권을 갖고 있는 것

     

    논블록킹(non-blocking)

    • 논블록킹 (non-blocking) : 자신이 호출되었을 때 제어권을 자신을 호출한 쪽으로 넘기고 자신을 호출한 쪽에서 다른 일을 할 수 있도록 하는 것

    모두 다른 개념!


    <통신 관점>

    출처 :&nbsp;https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-Synchronous%EB%8F%99%EA%B8%B0%EC%8B%9D-%ED%86%B5%EC%8B%A0%EA%B3%BC-Asynchronous%EB%B9%84%EB%8F%99%EA%B8%B0%EC%8B%9D-%ED%86%B5%EC%8B%A0%EC%9D%B4%EB%9E%80

     

    동기 통신

    • Blocking 방식
    • 동기 통신(Synchronous)이란 request가 있으면 해당 response가 전달될 때까지 다른 request를 요청할 수 없는 통신 방법이다. 즉, 두 서버 사이의 Transaction 을 맞추겠다는 뜻 입니다.
    • Request를 보낸 Thread는 Response가 도착하기 전까지는 아무것도 하지 못하는 Block 상태가 됨을 의미합니다.
    • 요청과 응답값의 순서를 보장하고, 보낸 Request에 대한 처리 결과 값을 보장 받을 수 있습니다.
    • 이 방법은 request에 대한 전달 결과가 중요한 서비스에서 사용이 되지만 결과보단 모든 요청이 신속하게 이뤄져야 하는 서비스에서는 추천되지 않는 통신 방법이다. (ex. 은행 송금할때는 동기 통신! 송금 확인 후 데이터 처리)
    • Response가 지연되게 된다면 Request를 보낸 Thread는 해당 Response를 무작정 기다리는 상태가 된다는 것입니다. 순차적으로 Response를 받고 Request를 받는 구조로 Response가 계속 지연되게 된다면 뒤에 들어오는 요청들은 Connection 가능한 Thread가 없어 연결을 맺지 못하는 성능 적인 이슈가 발생 할 수 있습니다.

     

    비동기 통신

    • non-Blocking 방식
    • 비동기 통신(Asynchronous)이란 request에 대한 response를 기다리지 않고 계속 request를 보내는 방식이다. 따라서 응답 순서는 요청 순서와 다를 수 있습니다.
    • Response를 기다리지 않고 있으니 Request를 보낸 Thread는 다른 일을 할 수 있습니다. Request를 보내고 Response를 기다리지 않고 다른 일을 하는 이러한 상태를 Non Block 상태라로 합니다.
    • 해당 방식은 결과보다는 더 빠른 성능이 요구되는 서비스에 적절하고, 결과가 중요한 서비스에서는 추천하지 않는 방식이다.
    • Response를 기다리지 않고 Non Block 상태로 계속 자기일을 하는 Async(비동기식) 방식은 Sync(동기식) 방식에 비해 성능적으로 좋다.

     

     

     

     

     

    728x90

    'Computer Science > CS' 카테고리의 다른 글

    [CS] 정규 표현식 Regular Expression, Regex  (0) 2023.01.19
    [CS] Graph, Tree  (0) 2022.11.28
    [CS] Windows kernel programming  (0) 2022.09.07
    [CS] SSL/TLS통신  (0) 2022.09.07
    [CS] 운영체제(OS, Operating System)  (0) 2022.05.10

    댓글

© 2022. code-space ALL RIGHTS RESERVED.