호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하도록 만드는 상태이다.
호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 남은 작업을 수행하고 호출된 함수는 자신의 작업을 수행하고 리턴한다.
호출하는 함수가 호출되는 함수의 작업 완료 후 리턴을 기다리거나 바로 리턴받더라도 작업 완료 여부를 호출하는 함수가 주기적으로 완료 상태를 계속 확인한다.
호출되는 함수가 실행되는 지점에서 callback을 전달해서 호출되는 함수의 작업이 종료되면 종료 시그널을 callback을 통해 받을 수 있다. callback을 통해 종료 시그널을 받기 때문에 호출하는 함수는 작업 완료 여부를 신경쓰지 않는다.
호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수는 아무것도 하지 못한다. 호출하는 함수가 주기적으로 호출되는 함수의 완료 상태를 계속 확인한다.
호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수는 아무것도 하지 못한다.
호출되는 함수가 실행되는 지점에서 callback을 전달하고 종료 후 callback을 통해 종료 시그널을 받는다.
호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 자신의 남은 작업을 수행하고, 호출된 함수의 작업 완료 여부를 주기적으로 완료 상태를 계속 확인한다.
호출한 함수는 호출된 함수가 시작되자마자 제어권을 회수해 자신의 남은 작업을 수행하고, 호출되는 함수가 실행되는 지점에서 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/