Synchronous / ASynchronous 차이

2022. 12. 10. 15:47카테고리 없음

Synchronous Programming

:여러 작업(tsek)들을 순차적으로 실행하도록 개발

ASynchronous Programming 

:여러 작업을 독립적으로  실행하는 프로그래밍 방법론

 

멀티코어: 쓰레드 많이 만들면 , 컨텍스트 스위칭에 비용이 많이 들고, 레이스 컨디션을 발생 시킬 수 있다.

싱글 스레드: I/O작업하고 다른일 할수 있다, CPU작업과 I/O 작업은 동시에 할 수 있기에 non-block 이면 싱글스레드 라도 여러작업 처리가 가능하다.

 

<I/O관점>

1)

Synchronous I/O = block I/O 

aSynchronous I/O = non-block I/O

2)

Synchronous I/O: 요청자가 I/O완료 까지 챙겨야 할때

aSynchronous I/O:완료를  os가 noti주거나 callback으로 처리 할때

 

:만약 c에서 응답 불능 상태에 빠지면 B 혹은 A 가 영향을 받아 서비스 전체 장애가 발생한다.

:A는 B에서 이벤트 전달시 Message Q라는 버퍼를 통해서 전달하기에 따로 기다리지 않고 작업을 해도된다.

B또한 마찬가지로 C가 관심있는 이벤트가 발생시 Message Q를 통해 전달하기에 각자 작업을 할수 있도록

독립적으로 실행이 되어 ,  C에 문제가 발생하더라도 전체적인 큰 문제가 되지는 않는다. 이런식으로 

event만 전달하는 방식에서는 Message Q 방식이 안전하고 효율적이지만 , 바로 바로 A가 B에게 API를 

호출받고 결과값을 받아야 하는 그런 상황에서는 Message Q방식은 느리다.