시간에 민감한 스레드
게임은 시스템에서 최대한 많은 성능을 끌어내려 합니다. 이를 위해 일부 게임 스레드는 시간에 민감하며, 시간에 민감한 스레드에서는 어떤 예상하지 못한 장기 실행 작업도 진행되지 않길 원합니다. 시간에 민감한 스레드의 전형적인 예는 게임의 렌더링에 사용하는 스레드입니다.
GRTS(Game Runtime Service)를 이용하면 시간에 민감한 스레드에서 호출하면 안 되는 API를 좀 더 쉽게 확인할 수 있습니다.
참고 항목
GRTS API는 "X"(예: XGameSaveInitializeProvider 또는 XGameGetXboxTitleId)로 시작하기 때문에 식별할 수 있습니다.
식별 시스템이 작동하려면 게임은 시간에 민감한 스레드에서 XThreadSetTimeSensitive를 호출해야 합니다. 이 API는 GRTS API로 쿼리할 수 있는 스레드 로컬 저장소에 저장합니다.
시간 민감성 스레드에서 호출이 안전한 것으로 간주되는 GRTS API는 같은 입력이 주어지는 경우 일관된 런타임 성능을 제공합니다. GRTS API가 시간에 민감한 스레드에서 호출하기에 적합하지 않다면, GRTS API는 XThreadAssertNotTimeSensitive를 내부 호출합니다. 시간에 민감하다고 표시된 스레드에서 안전하지 않은 함수를 호출하면, 다음과 같은 현상이 발생합니다.
- 디버거가 연결되었다면 어설션이 트리거되고 위반 발생이 개발자에게 통보됩니다. 또한 개발자는 모든 중단점을 비활성화하는 방법도 알게 됩니다.
- XbWatson(NDA 항목)권한 부여 필요에서 볼 수 있는 ETW(Windows용 이벤트 추적) 이벤트를 내보냅니다.
시간에 민감한 스레드에 대해 안전하지 않은 함수
다음 GRTS API 함수는 시간에 민감한 스레드에서는 안전하게 호출할 수 없습니다. 다른 모든 GRTS API 함수는 시간 민감형 안전이며 시간에 민감한 스레드에서 호출할 수 있습니다.