본문 바로가기

Computer Science

[Network] 비동기(Async)는 기다리지 않는다

refer to URLSession


 

Asychronous 통신은 Response를 기다리지 않기에 Request를 보낸 Thread가 다른 일을 편안하게 할 수 있다.

like 아주 오래된 연인들 ,, 

 

Response를 기다리지 않고 다른 일을 하고 있는 이런 상태를 Non Block 상태라 하는데,

Non Block 상태로 자기 일을 해나가는 Async(비동기식) 방식은 Sync(동기식) 방식에 비해 성능이 좋을 수 밖에 없다.

 

(하지만 Response를 받고 처리해야 하는 서비스 방식에는 적합하지 않다.)

 

 

Sync 방식은 이와 반대로 생각하면 쉽다. 하염없이 Response를 기다린다. 

마치 중국 사천성에 유학 간 푸바오 소식을 기다리는 나처럼.. 

 

Request를 보내면 시간이 얼마나 걸리든 그 곳에서 Response 기다려 두 서버의 Transaction을 맞춘다. 

 

이렇게 Sync 방식으로 Request를 보낸 ThreadResponse가 도착하기 전까지 아무것도 하지 못하는 Block 상태가 된다. Response가 계속해서 지연되면 뒤에 들어오는 요청들은 Connection 가능한 Thread가 없어 연결을 맺지 못해 성능적인 이슈가 발생할 수 있고 시스템의 전체적인 효율이 저하된다.