동기 & 비동기
공통점 : 기존의 작업을 수행하는 도중에 다른 작업의 수행을 요청하는 것.
차이점 : 요청한 함수의 작업 완료 확인여부.
- 동기
- 기존의 작업을 수행하는 도중에 다른 작업의 수행을 요청한다.
- 요청한 작업의 종료 여부를 확인한 후, 종료 시 작업을 기존의 작업을 이어서 수행한다.
- ex) 함수 A가 함수 B를 호출한 후, 함수 B의 리턴값을 계속 신경쓰면서 확인하는것.
- 비동기
- 기존의 작업을 수행하는 도중에 다른 작업의 수행을 요청한다.
- 이때, 작업 종료 후 종료 여부를 판단할 동작(작업이 완료 되면 실행할 콜백 함수)도 같이 전달한다.
- 요청한 작업의 종료 여부는 상관 없이 기존의 작업을 이어서 수행한다.
블로킹 & 논블로킹
공통점 : 기존의 작업을 수행하는 도중에 다른 작업의 수행을 요청하는 것.
차이점 : 제어권의 처리 여부.
- 블로킹
- 기존의 작업을 수행하던 중 필요한 값을 얻기 위해 제어권을 넘겨주어 작업 수행을 요청한다.
- 제어권을 넘겨줬기 때문에 기존의 작업을 잠시 중단하고, 요청한 작업을 수행 한다.
- 요청한 작업이 끝난 후 제어권을 돌려 받고 다시 기존의 작업을 수행 한다.
- 논블로킹
- 기존의 작업을 수행하던 중 다른 작업의 수행을 요청한 후, 제어권을 바로 돌려받는다.
- 기존의 함수가 제어권을 갖고 있기 때문에 요청한 함수의 작업 수행의 결과와는 상관없이 기존의 작업을 수행한다.
동기 & 블로킹
과정 :
- 기존의 함수가 새로운 함수의 작업을 요청한다.
- 블로킹 작업 이기 때문에 요청된 함수에게 제어권을 넘겨주고, 제어권을 넘겨 주기도 하였고 동기 작업 이기 때문에 요청된 함수가 수행을 끝낼 때 까지 기다린다.
- 요청된 함수는 제어권을 갖고 작업을 수행한다.