유니티 자격시험 Unity GameDeveloper)7. 멀티스레드, 코루틴
2021. 12. 6. 18:11ㆍ카테고리 없음
반응형
1. 스레드 (단일 스레드 / 멀티 스레드)
유니티는 단일 스레드로 처리함(기본) >> 작업 한 개씩 처리 (Massage Loop, 순서대로 작업 처리)
유니티 내부적으로는 멀티 쓰레드 사용 (CPU에서 동시에 처리. 단점으로는 정확한 디버깅,오류 제어 어려움)
멀티 쓰레드 사용 시, 레이스 컨디션 현상과 오류 발생 할 수 있음
레이스 컨디션 = 하나의 변수, 리소스에 여러 메소드가 동시에 접근하여 누구한테 우선수위를 주는지 결정
이러한 문제점은 c# 자체의 task 로 보완 가능하며
데이터 처리 시간이 많이 걸릴 때도 사용한다고 한다.
최근에는 유니티 자체에서 제공하는 Job system으로 멀티 스레드를 사용하고 게임 성능을 향상 할 수 있다고 함
2. 코루틴 (단일 스레드)
함수를 작동 시 게임 정지를 방지하도록 Main Loop로 돌려준다.
- yield 양보, return new waitseconds ~초간 Main Loop로 양보하라
양보 후 코루틴 내 작업한다.
메인과 서브 루프 간 협동하며, 단일 스레드 루프 하에서 일을 번갈아가며 진행
반응형