본문 바로가기
유니티

Async, Await_동기 비동기차이

by 유니티세상 2025. 1. 3.

코루틴x )

yield return,IEnumerator 일드 리턴, 이너머레이터 사용 X


unity async await yield enumerate 차이

https://wonseok1112.tistory.com/28



스레드와 동기

https://wonseok1112.tistory.com/27

 

 

유니티 어드레서블(addressable)을 사용하여 q키를 눌렀을 때 에셋 레퍼런스를 로드하는 예시이다.

 

LoadAssetAsync<GameObject>() 메서드로 비동기로 에셋을 로드하고, await 키워드를 사용하여

해당 로드 작업이 완료될때까지 대기한다. Task 속성을 사용하여 비동기 작업을 시작하고,

작업이 완료되면 로드된 에셋을 반환한다.

 

용량이 큰 맵 에셋을 로드하는 코드

 

1.unity async await yield enumerate 차이

 

코루틴과 async,awit의 차이

 

코루틴은 동기방식

 

비동기 사용하는 상황: 네트워크 서버통신을 하는경우, 용량이 큰 파일을 로드하거나 접근할때

 

ex)

코루틴은 동기이기때문에 탈출못함

 

 

작업의 용량 자체가 매우 큰 경우 또는 작업이 언제 끝날지 모르는 경우,

작업의 진행 시간이 매우 길어 블로킹(blocking) 상태가 오래 지속되는 경우에

async/await 비동기 방식을 사용해야 한다.

 

ex)

유니티 async / await 사용 예시

 




2.스레드와 동기

 

Unity에서 일반적으로 사용하는 함수 호출 방식은 동기

 

1. 동기식 싱글 스레드

 

본점에서 음식을 주문 -> 조리 완료 -> 다음 주문받음



2. 비동기식 싱글 스레드

 

본점에서 음식을 주문 -> 조리 및 주문받기 -> 조리가 빠른 순서대로 제공



3. 동기식 멀티 스레드

 

본점, 1호점, 2호점 중 한곳에서 음식을 주문 -> 조리 완료 -> 다음 주문받음



4. 비동기식 멀티 스레드

 

본점, 1호점, 2호점 중 한 곳에서 음식을 주문 -> 조리 및 주문받기 -> 조리가 빠른 순서대로 제공



3. 용어정의 

프로세스란

작업의 단위

유튜브를 보면서 인터넷서핑을 하는 행위가 여러 프로레스를 동시에 실행

프로세스간에는 메모리등의 자원을 공유하지 않음

 

스레드란

흐름의 단위

한 프로세스에서 여러 스레드 

 

동기란(synchrous)

task가 끝날때까지 계속 기다림

 

비동기란(async)

작업을 다른곳으로 보내고 기다리지 않음

각자할일함



'유니티' 카테고리의 다른 글

정규표현식 Regex(IsMatch)  (1) 2025.01.08
unity c# string.Format  (0) 2025.01.08
[Unity] Graphics API (OpenGL/DirectX)  (2) 2025.01.07
SHA1, SHA245 키 얻기 unity  (1) 2025.01.03
[error]unity addressable asset invalidkeyexception with aws  (0) 2025.01.03