동기 | - 현재 작업의 응답이 끝나는 시간과 맞춰 동시에 다음 작업을 요청한다. - 함수를 호출한 곳에서 호출된 함수가 결과를 반환할 때까지 대기한다. - 작업 완료 여부를 계속해서 확인한다. |
비동기 | - 현재 작업의 응답이 긑나지 않은 상태에서 다음 작업을 요청한다. - 함수를 호출한 곳에서 완료 여부를 신경쓰지 않고, 호출된 곳에서 작업이 끝나면 callback으로 결과를 전달 - 작업 완료 여부를 확인하지 않는다. |
* 콜백함수 : 비동기 프로그래밍을 신현하는 기본적인 방법으로, 특정 함수의 작업이 진행되는 동안 다른 작업을 하다가 특정 함수의 작업이 끝나면 콜백함수를 실행해 호출한 곳으로 결과를 전달한다.
예시)
동기 | - 블록과 유사하다. 하지만 차이점은 결과를 확인한다는 것이다. - 블록의 경우에는 함수의 결과가 나왔는지 확인하지 않는 반면, 동기의 경우에는 확인을 한다. - 즉, 호출된 함수의 수행 결과 및 종료를 호출된 함수 뿐 아니라 호출한 함수도 함께 신경쓰면 동기이다. |
비동기 | - 우리가 흔히 알고 있는 멀티스레드의 경우가 바로 비동기이다. - 결과 확인과 무관하게 계속 진행된다. - 동시성 문제를 해결해야한다. - 즉, 호출된 함수의 수행 결과 및 종료를 호출된 함수 혼자 직접 신경쓰고 처리하면 비동기이다. |
블록 | - 함수 A와 함수 B가 있고, 순서가 A -> B라고 가정하자. - 함수 B는 함수 A가 끝날 때까지 호출되지 못한다. - 즉, 호출된 함수가 자신이 할 일을 모두 마칠 때까지 제어권을 계속 가지고서 호출한 함수에게 바로 return 하지 않으면 블럭이다. |
논-블록 | - 함수 A, B, C가 있고, 순서가 A -> B -> C라고 가정하자. - 메인함수가 함수 A를 호출한다. 그러면 호출된 함수A는 실행되고 바로 리턴하면서 함수 B가 실행된다. - 여기서 리턴은 함수 A의 로직이 모두 끝난 후가 아닌, 시작하자마자 리턴한다는 의미이다. - 즉, 호출된 함수가 자신이 할 일을 마치지 않았더라도 바로 제어권을 바로 return하여 호출한 함수가 다른 일을 진행할 수 있도록 하면 논블럭이다. |
https://bentist.tistory.com/55
참고
https://bentist.tistory.com/55
Block/Non-block, 동기/비동기
많은 종류의 소프트웨어에서 동기 처리 방식이 Blocking이고, 비동기 처리 방식이 Non-Blocking이여서 동기와 Blocking, 비동기와 Non-block를 비슷한 개념으로 오해할 수 있다. 단지 일련의 작업들에 대해
bentist.tistory.com
https://hamait.tistory.com/930
블럭,논블럭,동기,비동기 이야기
블럭,논블럭,동기,비동기 이야기 블록,논블럭,동기,비동기를 구분하는 것에 대한 글들이 있는데, 별거 아닌거 가지고 어렵게 풀어내는 거 같아서 나름 간단하고 분명하게 구분해 보는 글을
hamait.tistory.com
https://dkswnkk.tistory.com/488
[OS] (동기/비동기) 와 (블럭/논블록의) 차이
서론 os 관련하여 깃허브에서 면접 자료들을 살펴볼 때마다 (동기/비동기)와 (블록/논블록의) 차이를 물어보는 질문이 너무 많았습니다. 공룡 책을 정독할 때도 책에서 위와 같은 내용은 다루지
dkswnkk.tistory.com
shell script 로그 수집 개선 (0) | 2022.06.14 |
---|---|
[Ubuntu] crontab 현재 날짜 파일명으로 사용하기 (0) | 2022.06.03 |
정보처리기사 실기 - 10.애플리케이션 테스트 관리 (0) | 2022.04.20 |
정보처리기사 실기 - 9.소프트웨어 개발 보안 구축 (0) | 2022.04.03 |
정보처리기사 실기 - 8.서버 프로그램 구현 (0) | 2022.04.03 |