유니티 멀티뜨레드
이번에 유니티 관련해서 지원한 회사들 중에 방대한 데이터를 처리 하는 과정이 있다. 더는 자료구조 알고리즘이 필요 없다고 이야기 하고 다닐수는 없을듯 싶다. CPU 스케줄링 알고리즘도 공부중이다.
면접에서 유니티가 멀티 스레드가 된다는 이야기를 듣고 찾아 보니 해당 기능이 있더라. 여기서 부터는 좀 하드웨어와 가까운 저수준을 좀 공부를 해둬야 할듯 싶다. 평소 인디 게임 개발에 딱히 컴퓨터 사이언스 지식이나 자료해석 알고리즘을 필요 없다고 생각하고 있어서 딱히 공부를 해두지는 않았었다. 그 대가를 치루는 중이다.
오류 가능성이 있는 휴리스틱을 이용해 게임에서 쓸수 있는 인공지능을 만드는 건 공부를 했었다. 그건 실제 게임 개발에 쓰곤 한다.
Async의 경우에는 파이어 베이스를 공부하다가 알게 되었기 때문에 파이어 베이스 공부하던데에서 이어서 작업해야 할듯 싶다.
코루틴 어떻게 하는지는 건너 띠고 async만 따로 해보도록 한다. async의 경우에는 따로 유튜브 영상을 보고 공부를 해야 할듯 싶다.
async는 따로 이걸 보고 공부를 하도록 해야 겠다.
유니티에서 async, await 사용하기
굉장히 오버헤드가 큰 작업을 해야하는데 실시간성을 확보하고 싶을때가 있다. 맵을 로딩하는 동안 로딩 아이콘이 끊김 없이 뱅글뱅글 돌게 하고 싶은 경우가 좋은 예시. 보통 이럴 땐 일회용
velog.io
이것도 한번 따라해 보도록 해야 겠다.
https://crabggomi.tistory.com/13
유니티 C# 테크닉 - Async, Update, Coroutine
일정 시간을 지연시킨후 어떤 동작을 하고 싶을때 유니티 C#에서는 몇가지 선택을 할 수 있다. Async await, Update, Coroutine이 그것으로 각각 동작방식과 구현 방식 차이점등을 살펴보자. 먼저 가장 단
crabggomi.tistory.com
이것도 한번 따라해 봐야 겠다.
Job 시스템까지만 보고 면접 보러 가야 겠다.
멀티 스레드 기능을 쓰려면 컴퓨터 사이언스의 CPU 스케줄링 알고리즘 같은걸 공부를 해야 하나 이런 생각이 든다. 인디 게임 개발할때는 교과서에 나오는 자료구조 알고리즘 같은거 구지 공부할 필요가 없었는데 취업을 하려고 하니까 걸리적 거리게 되는듯 싶다.
오늘 내일해서 마무리 하고 이거 마무리 되는 대로 유니티 디자인 패턴을 한번 따라 만들어 보는 시간을 가져야 할듯 싶다.
별도에 코드가 없으면 1번 쓰래드를 활용하는듯 싶다.
다시 작성한다.
106번에 가서 작업하고 있다.
아마도 일반 작업때는 쓰지 않고 비동기가 필요한 작업이나 모든 쓰래드를 써야 하는 최적화 작업이 필요한 구간에 한해서 제한적으로 멀티 스래드 기능을 쓸듯 싶다. 여기까지 맛만 보고 넘어가도록 한다.
유튜버에 다른 글을 보니 코루틴과 잡 시스템을 같이 쓰는 경우에 메모리 누수가 생길수도 있다고 한다. 메모리 관리를 편하게 하자고 언리얼이 아니라 유니티를 쓰고 있는데 괜히 머리 아파지는듯 싶다. 네이티브 어레이 등을 안쓰면 메인스레드에서 충돌이 나온다니 좀 복잡 복잡 해지는듯 싶다.
async나 알아 둬야 겠다. 이게 서버랑 통신할때는 코루틴이 아니라 이걸로 하면 깔끔하게 나오기 때문에 그땐 이걸 써야 한다.