본문 바로가기
728x90
반응형

Coroutine3

코루틴(Coroutine) 오늘은 간만에 유니티를 공부하면서 스스로 질문을 많이 해봤다. 이 중 제대로 대답하지 못했던 기초들을 정리하려고 한다. 그 중 첫 이야기는 코루틴이다. 사실 매우 자주 사용하고 이젠 익숙해졌지만 이게 뭔지 매.우.정.확.하.게 대답하지 못했다. C#에서의 코루틴 - 비동기 코드를 구현하기 위한 방법 중 하나다. 일반적으로 메서드처럼 보이지만 '중간에 일시 중지되어 다른 코루틴을 실행하고 나중에 중단한 지점부터 계속 실행된다' => 일시정지 가능한 비동기 방법 Unity에서 코루틴 (항상 RTFM을 해보자 코루틴 - Unity 매뉴얼 (unity3d.com)) - 비동기 작업을 처리하면서도 게임 루프의 제어를 유지할 수 있기 때문이다. -> 동시성 프로그래밍이 가능해진다. 코루틴의 동작 깊게 알기 - 코루.. 2023. 11. 20.
Coroutine 이야기 C# 에서의 Coroutine - 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 진입점을 허용함 - 처리 도중 취소가 가능하다 - 하나의 Object로 Single Thread에서 더욱 효율적으로 사용하기 위해 만들어진 것 - 병렬 처리가 아닌 동시성 처리다 - Why use? 하나의 스레드에서 오랫동아 처리되는 작업 진행시 스레드가 대기상태가 되는데, 대기 상태에 진입한 스레드를 깨워서 다른 작업 수행할 수 있게 하여 효율성 극대화 하려고 - 가만 보면 병렬처리하는 것 과 매우 비슷해 보이나, 서로 다름을 인지하고 있자!! Unity에서의 Coroutine - 기본적으로 C#을 사용하기에 위 내용은 기본 - Unity에선 StartCoroutine을 통해 코루틴을 실행! 이건 엔진 내부에서 .. 2022. 11. 11.
Coroutine - 가비지 줄이기 [GC가 도는 이유 및 최적화 아이디어 소개] Unity에서 StartCoroutine 호출 시 Unity 엔진 내부에서 인스턴스가 생성되면서 GC가 도는데, 사실 엔진 자체에서 제공하는 기능이기에 이를 완벽하게 GC호출이 안되겐 할 수 없으나, yield문 return시 new 구문에서 YieldInstruction이 생성되어 사용되면서 가비지가 생성되니 YieldInstruction을 미리 캐싱해두는 방식을 사용하여 최적화 하는게 중요합니다! [코드 및 설명] # 우선 이 코드는 Unity 공식 포럼에 나온것과, 다른 분들이 짜놓은 코드를 참고하여 저의 경우 WaitForSeconds를 자주 사용하여 이 기능 위주로만 사용하게 살짝 바꿨습니다. 아래 출처 표기했습니다. namespace Cashing.. 2022. 11. 11.
728x90
반응형