강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

hjsss님의 프로필 이미지
hjsss

작성한 질문수

[Rookiss University] UE5 Lyra 클론 코딩 (Haker)

AssetManager

AddLoadedAsset 쓰레드 부분 이해가 안갑니다.

해결된 질문

작성

·

42

0

LoadedAssets에 동시접근하는 이슈를 막기 위해, 언리얼 에디터 로드 전에는 쓰레드가 안전하지 않아서라고 말씀하셨는데

AddLoadedAsset을
GetAsset과 GetSubclass 함수에서 호출할텐데
GetAsset과 GetSubclass 함수를 여러 쓰레드에서 동시에 호출할 일이나 가능성이 있나요?

그리고 에디터가 로딩중이라 GC시스템이등이 초기화되지 않아서 쓰레드가 safe하지 않을때는 쓰레드가 의도하지 않은 메모리에 접근할 확률이 있는지도 궁금합니다 (왜 safe하지 않은지가 궁금해요!)

답변 1

1

Liu님의 프로필 이미지
Liu
지식공유자

멀티 스레드 관련 내용은 난이도가 높아서 강의에서는 간단하게 에디터 로드 중으로 말씀드렸었는데 에디터 로드 과정에서 쓰레드 문제는 좀 복잡해서 다른 예시로 알려 드릴게요.

어떠한 에셋을 로드하는 과정 자체를 언리얼에서는 게임 스레드 말고 다른 스레드로 Task 형태로 던져서 시킬 수가 있어요.
만약에 100개를 로드해야 한다고 가정하면 20개씩 다른 스레드로 Task 형태로 던지면 정말 속도가 빠르거든요.

이렇게 로드하면 문제가 로드에 대한 데이터를 가지고 있는 배열에서 경쟁 상태 문제가 발생합니다.

그래서 락 방식으로 안전하게 라이라는 처리 한거에요.

에디터 로드 중에 저희가 임의로 모듈 단계에서 뭔가 건드리면 의도치 않을 수 있긴 한데 이것도 경우의 수도 너무 많고 어려워서 일반적으로 고려하지 않으셔도 괜찮습니다.

hjsss님의 프로필 이미지
hjsss

작성한 질문수

질문하기