sync/async 와 blocking/non-blocking개념

haram·2023년 5월 10일
0

Sync/Async와 Blocking/Non-Blocking의 차이 : A함수가 B함수를 호출하는 경우를 가정

Sync/Async

B함수의 결과를 A함수에서 처리하는지에 대한 구분, Sync인 경우에는 B함수가 끝날 때까지 기다린 후 B의 결과를 A가 처리하지만, Async인 경우에는 B의 결과는 callback함수를 통해 처리한다

Blocking/Non-Blocking

실행의 제어권을 누가 가지느냐에 대한 구분, Blocking인 경우에는 A가 B를 호출한 경우에 B가 종료되기 전까지 B가 제어권을 가지지만, Non-Blocking인 경우에는 B가 실행된 직후 바로 리턴하여 제어권을 A에게 넘겨준다.

소켓은 기본적으로 blocking모드이기 때문에 단일 스레드에서는 소켓통신을 하는 중에는 다른 작업을 진행하지 못한다. 하지만 소켓을 non-blocking모드로 전환하면 소켓함수가 실행되는 즉시 반환되어 다른 작업을 진행 할 수 있다. 이 때 지속적으로 통신이 완료되었는지를 확인 함으로써 완료처리를 한다.

0개의 댓글