Asynchronous, Synchronous, Blocking, Non - Blocking 정의
Asynchronous: 호출된 함수의 리턴 시간(e.g. Handler를 등록하는 시간, os.register(handler))와 결과를 반환하는 시간(e.g. handler 함수가 return 되는 시간)이 일치하지 않는 경우
Synchronous: 호출된 함수의 리턴 시간과 결과를 반환하는 시간이 일치하는 경우
Blocking: 직접 제어할 수 없는 대사으이 작업이 끝날 때까지 기다려야 하는 경우
Non-Blocking: 직접 제어할 수 없는 대상의 작업이 완료되기 전에 제어권을 넘겨주는 경우참조: https://velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx
위 글의 정의에 따르면 결국 handler를 쓰는 패턴은 주로 async하다고 할 수 있다.(조금 위험할 수 있는 말이지만 Asynchronous를 위와 같이 정의한다면 이렇게 주장할 수 있다.)
void mouseHandler(mouseEvent):
# mouse를 움직여라....
os.register(mouseEvent, mouseHandler)