정의 : 

 

동기적(Synchronous)

- 특정 코드를 수행 완료한 이후 아래줄의 코드 수행

- 즉 지금 진행하는 작업이 끝이나면 다른 작업으로 넘어가고 그 작업이 끝이 나면 다른 작업으로 넘어가는 방식이 동기적 처리 방식이라고 한다.

 

비동기적(Asynchronous)

- 특정 코드를 수행하는 도중에도 아래로 계속 내려가며 수행함

- 순서대로 진행하는 것일 아니라 한번에 여러개가 진행되는 것과 마찬가지다. 비동기적 처리는 주로 api요청, 파일읽기, 암호화, 복호화 등에서 자주 사용된다.

 

특징 : 

 

동기 : 

속도가 느림

진행방향이 일방향이기 때문에 코드에서 에러가 나면, 어디인지 파악하기 쉬움

 

비동기 :  

속도가 동기에 비해 빠름

 

언어 : 

동기적 언어 - Argos, Atom 등의 대부분 모르는 언어들

비동기적 언어 - Java, C++, Python, JavaScript 등

 

주의할 점 : 

혼동하지 말아야 할 것이, 동기/비동기적 실행은 멀티 스레딩과 전혀 관련이 없다. 즉 하나의 스레드에서도 비동기적 실행을 할 수 있고, 멀티 스레드에서도 동기적 실행을 할 수 있다. 스레드 혹은 코어의 개수가 중요한 것이 아니라, 서브루틴간의 실행 순서가 정해져 있는지가 중요하다. 이와 관해선, 이 링크의 그림을 참고하자.

 

Asynchronous vs synchronous execution, what is the main difference?

What is the difference between asynchronous and synchronous execution?

stackoverflow.com


참고 : 

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

 

 

 

 

 

 

+ Recent posts