blocking은 호출하는 함수를 끝까지 기다리는 반면, nonblocking은 호출 뒤에도 뒤의 문을 계속 실행한다.
중요한건 sync-nonblock, async-nonblock의 차이인데,
sync nonblock은 지속적으로 호출하는 함수에서 실행상황을 확인하는, Function A가 책임을 가지는 반면,
async - nonblock은 호출된 함수 B가 함수 실행의 책임을 가진다.
루틴 - 하나의 정리된 일, 보통 프로그램은 크고 작은 루틴들을 조합시켜 성립된다.
메인 루틴 - 프로그램 전체의 개괄적인 동작 절차를 표시하도록 만드는 핵심 역할 수행
서브루틴 - 반복되는 특정 기능을 모아 별도로 묶어 이름을 붙이고 사용하는 하위 루틴
코루틴 - 루틴의 일종