[CS : 네트워크] Blocking I/O & Non-Blocking I/O, Synchronous & Asynchronous

2021. 5. 20. 19:04CS 스터디

1) Blocking / Non–Blocking Synchronous / Asynchronous

 

A. Blocking

: 직접 제어할 수 없는 대상의 작업이 끝날 때까지 제어권을 넘겨주지 않는 것이다. 예를 들어 호출하는 함수가 IO를 요청했을 때 IO처리가 완료될 때까지 아무 일도 하지 못한 채 기다리는 것을 말한다.

 

B. Non-Blocking

: 직접 제어할 수 없는 대상의 작업 처리 여부와 상관이 없다. 예를 들어 호출하는 함수가 IO를 요청한 후 IO처리 완료 여부와 상관없이 바로 자신의 작업을 할 수 있다.

 

C. Synchronous

: A B가 시작 시간 또는 종료 시간이 일치하면 동기이다. 예를 들어 A, B Thread가 동시에 작업을 시작하는 경우(예를 들면, 자바에서 CyclicBarrier) Method Return 시간(A)과 결과를 전달받는 시간(B)이 일치하는 경우

 

, A가 끝나는 시간과 B가 시작하는 시간이 같으면 동기이다.

 

D. Asynchronous

: 비동기는 동기와 반대로 대상이 서로 시간을 맞추지 않는 것을 말한다. 예를 들어 호출하는 함수가 호출되는 함수에게 작업을 맡겨놓고 신경을 쓰지 않는 것을 말한다.

 

IBM article 에 게재된 Boost application performance using asynchronous I/O 도표