정의 :
동기적(Synchronous)
- 특정 코드를 수행 완료한 이후 아래줄의 코드 수행
- 즉 지금 진행하는 작업이 끝이나면 다른 작업으로 넘어가고 그 작업이 끝이 나면 다른 작업으로 넘어가는 방식이 동기적 처리 방식이라고 한다.
비동기적(Asynchronous)
- 특정 코드를 수행하는 도중에도 아래로 계속 내려가며 수행함
- 순서대로 진행하는 것일 아니라 한번에 여러개가 진행되는 것과 마찬가지다. 비동기적 처리는 주로 api요청, 파일읽기, 암호화, 복호화 등에서 자주 사용된다.
특징 :
동기 :
속도가 느림
진행방향이 일방향이기 때문에 코드에서 에러가 나면, 어디인지 파악하기 쉬움
비동기 :
속도가 동기에 비해 빠름
언어 :
동기적 언어 - Argos, Atom 등의 대부분 모르는 언어들
비동기적 언어 - Java, C++, Python, JavaScript 등
주의할 점 :
혼동하지 말아야 할 것이, 동기/비동기적 실행은 멀티 스레딩과 전혀 관련이 없다. 즉 하나의 스레드에서도 비동기적 실행을 할 수 있고, 멀티 스레드에서도 동기적 실행을 할 수 있다. 스레드 혹은 코어의 개수가 중요한 것이 아니라, 서브루틴간의 실행 순서가 정해져 있는지가 중요하다. 이와 관해선, 이 링크의 그림을 참고하자.
참고 :
https://wakestand.tistory.com/235
https://velog.io/@hyundong_kk/%EB%8F%99%EA%B8%B0%EC%A0%81-vs-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%A0%81
https://code-masterjung.tistory.com/69
'개발합시다. > BackEnd 공부' 카테고리의 다른 글
프로그래밍 언어 관련 면접 질문 정리 ① (0) | 2021.09.14 |
---|---|
알고리즘 관련 면접 질문 정리 ① (0) | 2021.09.13 |
RDBMS vs NoSQL (간단 정리) (0) | 2021.09.03 |
MVC 모델 MVP 모델 뭐가 다를까? (0) | 2021.09.03 |
Java Gradle 과 Maven의 차이 (0) | 2021.09.03 |