동기와 비동기란?
- 예를 들어서 a, b, c 라는 메서드가 있다고 가정하겠다.
- 동기는 a, b, c 메서드를 차례대로 호출할 때, a 메서드가 모든 작업을 완료한 후에 b 메서드를 실행해준다.
- 비동기는 a, b, c 메서드를 차례대로 호출할 때, a 메서드가 모든 작업을 완료한 것과 상관 없이, b 메서드를 실행해준다.
- 비동기 메서드는 다른 비동기 메서드에서 호출할 수 있다. 동기 메서드에서는 비동기 메서드의 기능을 사용할 수 없다.
async, await란?
- 비동기로 실행될 함수를 구현할 수 있다.
- 코루틴과 다르게 return값을 가질 수 있다.
- 반환 값은 기본적으로 void이다.(Task<int>, Task<string>…)
async
await
- async로 선언된 함수 안에서만 사용 가능하다
- await문 안의 작업 내용이 끝날 때까지 정지된다.
사용법
- 호출하는 법
- Task.Run(() ⇒ method());
- method();
- 반환 받는 법
주의할 점
- await의 사용으로 메인 스레드가 멈추지 않도록 주의해야 한다.
- Unity API는 메인 스레드에서만 사용 가능하다.