본문 바로가기

Android

[펌] Blocking vs Non-blocking / Synchronous vs Asynchronous

https://brainbackdoor.tistory.com/26

 

blocking vs non-blocking / synchronous vs asynchronous

[2017/09/09 추가] 포스팅 후에 피드백을 받았습니다. 원래 글은 IBM 및 다른 블로그, 책 등을 참조해서 작성했었는데, 애초에 IBM 블로그가 오류가 있다고 하네요. 인터넷 상에 IBM 블로그를 기초로 작성된 글들..

brainbackdoor.tistory.com

async : 이벤트 핸들러 (callback)에 의해 처리 (callback 함수가 호출되기까지 다른 작업 가능)

sync : 이벤트를 자신이 직접 처리(확인의 주체가 유저 프로세스이며, 다 될때까지 기다리거나 스스로 확인)

block : 완료까지 대기(리턴되기 전까지 멈춤)

non-block : 미완료라도 즉시 리턴

 

간단히 까페에서 커피를 주문하는 것을 예로 들어보면,

1. 커피를 타달라는 요청이 왔다. 

2-1. 이 때 커피가 있으면 타준다(블로킹/넌블로킹 모두)

2-2. 커피가 없는 경우 블로킹 : '잠깐만요'하고 사러 간다. / 넌블로킹 : 커피가 없다고 말하고 사러 간다.

3-1. 동기 : 커피가 타졌는지 안타졌는지 내가 확인한다.

3-2. 비동기 : 벨이 울리면 받으러 간다.