언리얼 5.2.1 기준으로 작성되었습니다
1.
FRunnable의 가상함수들은 직접 호출할 필요가 없다.
FRunnableThread의 여러 함수들이 스레드와 연결되어있는 FRunnable의 가상함수를 내부적으로 호출해 사용한다.
때문에 코드 작성 시에는 FRunnableThread로 스레드 동작의 흐름을 제어하며,
FRunnable 가상함수를 직접 호출할 일은 거의 없다.
2.
FRunnable::Init()의 override가 false를 반환하고 있지는 않은지 확인해야 한다.
VS에서 자동으로 정의를 만드는 기능을 사용해 함수 구현부를 자동 생성하면
항상 false를 반환하도록 구현하기 때문에 주의가 필요하다.
3.
FRunnableThread::Kill()을 사용할 때는 조심해야 한다.
이 함수는 공식 문서에도 자세히 설명되어 있지 않은 내부적인 로직이 있는데,
해당 스레드에서 동작중인 FRunnable의 FRunnable::Stop()를 Run과 별도의 스레드에서 실행한 후,
WaitForSingleObject()로 FRunnable::Run() 종료까지 무한히 대기하고,
FRunnable::Run()이 끝나면 별도의 스레드에서 FRunnable::Exit()을 호출한다.
엔진 소스코드를 살펴보는 것을 권장한다.
4.
마지막으로 FRunnable과 관해서 인터넷에서 찾을 수 있는 자료들 중 잘못 작성된 자료가 꽤 있는데,
자료를 참고할 때는 해당 자료의 엔진 버전을 잘 확인하고
내용이 잘못되었거나 코드가 위험한 방식으로 작성되진 않았는지 잘 확인하자.
'game engines > Unreal Engine' 카테고리의 다른 글
Custom Movement Component (0) | 2023.10.28 |
---|---|
[UE5] 블루프린트에서 RootComponent가 제대로 설정되지 않을 때 (0) | 2023.09.12 |
[UE5] Standalone Playmode에서 빌드가 업데이트가 안되는 경우 (0) | 2023.08.22 |
[UE5] exception_access_violation writing address 0x0000000000000000 (0) | 2023.08.22 |
[UE5] 윈도우 라이브러리를 사용하며 발생하는 문제들 (0) | 2023.08.19 |