Blocking / Non-Blocking Blocking과 Non-Blocking은 주로 멀티 스레딩, I/O 등에서 사용되는 개념이며, 함수의 리턴 시점과 제어권(함수를 실행할 권리)에 따라 차이가 난다. 각각 특징을 살펴보자. Blocking Blocking은 호출된 함수가 제어권을 넘겨주지 않아 호출한 함수 측에서는 다른 작업을 수행할 수 없고 제어권이 돌아오기만을 기다리는 것을 말한다. 즉 호출된 함수의 작업이 완료된 후 다시 작업을 이어갈 수 있다. 위 그림을 보면, 먼저 A 함수가 B 함수를 호출하면 B 함수에게 제어권을 넘긴다. 제어권을 넘겨받은 B 함수는 열심히 함수를 실행한다. 이때 A 함수는 실행을 잠시 멈춘다. 그리고 B 함수는 실행이 끝나면 A 함수에게 제어권을 돌려준다. Non-..