Synchronous
- Tasks are performed one at a time. 하나의 task 가 완료 되어야 만 그 다음 task 가 실행 된다.
Asynchronous
- 사전의 task 가 완료 되기 전에 다른 task 가 실행 될 수 있다. 이를 통해 다수의 requests 를 동시에 처리 할 수 있다.
비동기 프로그래밍을 사용해야 하는 경우
- 항상 비동기 프로그래밍이 효율적이진 않다. 독립적인 task를 처리 할때 사용하는 것이 좋다.
- 비동기 프로그래밍을 사용하기 이전에, task 간의 의존성을 먼저 파악 한 후에 사용해야 한다.
어떤 task 가 독립적으로 실행되는지 파악하고, 또 어떤 task 들이 순차적으로 처리되어야 하는지 파악해야 한다.
- 서로 독립적인 tasks를 비동기 프로그래밍을 통해 동시에 처리가 가능해지면 프로세스가 시작부터 끝나는 시간이 많이 단축 될 수 있다.
*** 서로 독립적인 task 가 아니고, 순차적으로 실행되어야 하는 task 라면 synchronous programming 으로 처리해야 한다.