동기와 비동기에 대해 자료를 찾아보다 헷갈리는 개념이 있어 저의 방법 대로 정리해봅니다. 제 생각이므로 당연히 틀릴 수 있습니다.
의미
Synchronous, Asynchronous
Synchronous
-> 함수가 A,B 순서로 호출 됐을 때, 논리적인 순서로 A가 완료 된 후 B가 실행 되면 Synchronous
Asynchronous
-> 함수가 A,B 순서로 호출 됐을 때, A 호출 후 완료에 상관없이 B를 호출 할수 있으면 Asynchronous
Blocking, Non-Blocking
Blocking
- 함수가 A 호출 됐을 때, A가 완료 될 때까지 호출한 쪽에서 다른 것을 할수 없을 때
Non-Blocking
- 함수가 A 호출 됐을 때, A의 완료 여부와 상관 없이 다른것 을 할수 있을 때
예
method a,b 의 수행 시간이 각각 2초 1초 라고 가정
Synchronous & Blocking
- 자바의 경우 일반적으로 Synchronous & Blocking 입니다.
- 프로그램 완료 시간 3
Synchronous & Non-Blocking
- 일반적으로 다른 프로세스에 요청을 하고 그 결과가 완료된것을 요청한쪽에서 계속 확인하는 구조입니다.
- 프로그램 완료 시간 3+@
Asynchronous & Blocking
- Blocking 되어버린다면 Synchronous 한 결과만 얻을수 있기 때문에 의미가 없지 않나 생각 됩니다.
- 프로그램 완료 시간 3
Asynchronous & Non-Blocking
- 다른 프로세스에 요청을하고 호출한쪽에서 자기 할것을 합니다.
- 프로그램 완료 시간 2
[참조]
https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/
https://velog.io/@codemcd/Sync-VS-Async-Blocking-VS-Non-Blocking-sak6d01fhx