동기 vs 비동기, 블로킹 vs 논블로킹
동기(Syncronous)
함수 A가 함수 B를 호출한 뒤 함수 B가 끝날 때 까지 기다리는 것.
작업 완료 여부를 계속해서 확인한다.
비동기(Asyncronous)
함수 A가 함수 B를 호출할 때 콜백함수를 같이 전달해서 콜백함수에서 결과를 처리한다.
작업 완료 여부를 확인하지 않는다.
블로킹(Blocking)
제어권이 호출된 함수에게 넘어가서 호출된 함수의 작업이 모두 끝난 후 리턴되고, 동시에 제어권이 다시 돌아간다.
논블로킹(Non-Blocking)
제어권이 계속 호출한 함수에 있고, 값의 리턴이 함수의 실행과 동시에 이루어진다.