메서드를 호출하면, 그 작업이 끝날 때까지 다음 코드가 실행되지 않는다.
작업이 순차적으로 실행된다.
하나의 작업이 완료되어야 다음 작업이 시작된다.
[작업 A 실행 중...]
|
v
[작업 A 완료 후 작업 B 실행]
|
v
[작업 B 완료 후 작업 C 실행]
PlayOneShot();
GoBack();
PlayOneShot()이 끝나야 GoBack()이 실행된다.
메서드를 호출하면, 기다리지 않고 바로 다음 코드를 실행한다.
작업이 병렬적으로 실행된다.
백그라운드에서 작업이 진행되고, 완료되면 결과를 알려준다.
[작업 A 시작 ──────────────▶ 완료]
[작업 B 시작 ───────▶ 완료]
[작업 C 시작 ─────────────────────────────▶ 완료]
어떤 작업이 먼저 끝날지 예측이 힘들지만, 동시에 진행된다.
PlayOneShotAsync();
GoBack();
PlayOneShotAsync()은 백그라운드에서 실행되고,
동시에 GoBack()이 실행된다.
| 구분 | 동기 (Sync) | 비동기 (Async) |
|---|---|---|
| 실행 순서 | 순차적 | 병렬, 동시에 진행 가능 |
| 다음 코드 실행 | 작업이 끝나야 가능 | 작업 중에도 다음 코드 실행 가능 |
| 장점 | 순서 보장, 단순 | 사용자 경험 향상 |
| 단점 | 작업 완료까지 대기해야 한다. | 흐름 추적이 어렵고, 예외 처리 복잡해질 수 있다. |