blocking/non blocking, sync/async

Red Culture·2021년 7월 16일
0

blocking

호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하도록 만드는 상태이다.

non blocking

호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 남은 작업을 수행하고 호출된 함수는 자신의 작업을 수행하고 리턴한다.

sync

호출하는 함수가 호출되는 함수의 작업 완료 후 리턴을 기다리거나 바로 리턴받더라도 작업 완료 여부를 호출하는 함수가 주기적으로 완료 상태를 계속 확인한다.

async란

호출되는 함수가 실행되는 지점에서 callback을 전달해서 호출되는 함수의 작업이 종료되면 종료 시그널을 callback을 통해 받을 수 있다. callback을 통해 종료 시그널을 받기 때문에 호출하는 함수는 작업 완료 여부를 신경쓰지 않는다.

sync-blocking

호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수는 아무것도 하지 못한다. 호출하는 함수가 주기적으로 호출되는 함수의 완료 상태를 계속 확인한다.

async-blocking

호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수는 아무것도 하지 못한다.
호출되는 함수가 실행되는 지점에서 callback을 전달하고 종료 후 callback을 통해 종료 시그널을 받는다.

sync-non blocking

호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 자신의 남은 작업을 수행하고, 호출된 함수의 작업 완료 여부를 주기적으로 완료 상태를 계속 확인한다.

async-non blocking

호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 자신의 남은 작업을 수행하고, 호출되는 함수가 실행되는 지점에서 callback을 전달하고 종료 후 callback을 통해 종료 시그널을 받는다.
가장 리소스를 효율적으로 사용하는 모델이다. 호출하는 함수는 호출된 함수에게 요청한 일에 대해 요청만 한 후 신경 끄고 자기 일을 계속 할 수 있고, 호출된 함수도 알아서 요청 받은 일이 끝나면 콜백 함수로 작업의 마무리를 지으면 되기 때문이다.

*참고 자료
https://suho413.tistory.com/entry/Blocking-NonBlocking-Sync-AnSync-%EC%B0%A8%EC%9D%B4
https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/

profile
자기 개발, 학습 정리를 위한 블로그

0개의 댓글

관련 채용 정보