7월10일
동기 와 비동기
-> 처리해야할 작업들을 어떤 흐름으로 처리할 것에 대한 관점을 나타내는 것
블로킹 vs 논블로킹
->처리되어야 하는 (하나의) 작업이, 전체적인 작업 '흐름'을 막느냐 안막느냐에 대한 관점
*제어권/결과값
제어권 = 함수의 내용을 실행실킬 수 있는 권리
( 말 그대로 권한 자체이며, 제어권이 있어야 함수 안에 있는 작업들을 실행 시킬수가 있다. )
결과값 = 함수의 리턴 값
(결과값은 우리가 자주 쓰는 함수의 리턴 값을 말한다.)
블로킹은 다른 함수를 호출할때 제어권도 아예 넘겨주며 작업이 끝난 후 돌려 받는 형식이다.
논 블로킹도 마찬가지로 호출할때 제어권을 넘겨주긴 하지만 바로 돌려받으며, 작업이 안끝나도 바로 제어권을
돌려 받고 뒤의 작업을 시작하는것이다.
블로킹(blocking)
- 요청자(부모함수)는 요청한 작업이 끝날 때까지 다른 작업을 하지 않고 마냥 기다림
- 다른 함수를 호출할 때, 제어권도 아예 함께 넘겨주고 그 작업이 끝난 후에야 돌려받기 때문
- (제어권이 없는 상태라 아무것도 못함)
- 요청받은함수는 모든 실행을 마치고 최종 return 값을 돌려줌
논블로킹(non-blocking)
- 요청자는 요청한 작업이 수행되는 동안 다른 작업을 할 수 있음
- 다른 함수를 호출할 때, 제어권을 넘겨주기는 하지만 바로 돌려받음
- (제어권을 돌려받은 호출자는 다른 작업을 바로 수행 가능)
동기와 비동기 / 블로킹과 논블로킹을 조합하면 4가지 경우의 수를 만들 수 있다.