다음을 통해 공유


시간에 민감한 스레드

게임은 시스템에서 최대한 많은 성능을 끌어내려 합니다. 이를 위해 일부 게임 스레드는 시간에 민감하며, 시간에 민감한 스레드에서는 어떤 예상하지 못한 장기 실행 작업도 진행되지 않길 원합니다. 시간에 민감한 스레드의 전형적인 예는 게임의 렌더링에 사용하는 스레드입니다.

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 함수는 시간 민감형 안전이며 시간에 민감한 스레드에서 호출할 수 있습니다.

네트워킹 API

헤더 함수
XNetworking XNetworkingQueryPreferredLocalUdpMultiplayerPort
XNetworking XNetworkingUnregisterConnectivityHintChanged
XNetworking XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged
XNetworking XNetworkingVerifyServerCertificate

시스템 API

헤더 함수
XAccessibility XClosedCaptionGetProperties
XAccessibility XClosedCaptionSetEnabled
XAccessibility XHighContrastGetMode
XAccessibility XSpeechToTextSendString
XAccessibility XSpeechToTextSetPositionHint
XAppCapture XAppBroadcastGetStatus
XAppCapture XAppBroadcastIsAppBroadcasting
XAppCapture XAppBroadcastRegisterIsAppBroadcastingChanged
XAppCapture XAppBroadcastShowUI
XAppCapture XAppBroadcastUnregisterIsAppBroadcastingChanged
XAppCapture XAppCaptureCloseScreenshotStream
XAppCapture XAppCaptureDisableRecord
XAppCapture XAppCaptureEnableRecord
XAppCapture XAppCaptureMetadataAddDoubleEvent
XAppCapture XAppCaptureMetadataAddInt32Event
XAppCapture XAppCaptureMetadataAddStringEvent
XAppCapture XAppCaptureMetadataRemainingStorageBytesAvailable
XAppCapture XAppCaptureMetadataStartDoubleState
XAppCapture XAppCaptureMetadataStartInt32State
XAppCapture XAppCaptureMetadataStartStringState
XAppCapture XAppCaptureMetadataStopAllStates
XAppCapture XAppCaptureMetadataStopState
XAppCapture XAppCaptureOpenScreenshotStream
XAppCapture XAppCaptureReadScreenshotStream
XAppCapture XAppCaptureRecordDiagnosticClip
XAppCapture XAppCaptureRegisterMetadataPurged
XAppCapture XAppCaptureTakeDiagnosticScreenshot
XAppCapture XAppCaptureTakeScreenshot
XAppCapture XAppCaptureUnRegisterMetadataPurged
XAsyncProvider XAsyncComplete
XDisplay XDisplayAcquireTimeoutDeferral
XDisplay XDisplayCloseTimeoutDeferralHandle
XDisplay XDisplayTryEnableHdrMode
XError XErrorSetCallback
XError XErrorSetOptions
XGame XGameGetXboxTitleId
XGame XLaunchNewGame
XGameEvent XGameEventWrite
XGameInvite XGameInviteRegisterForEvent
XGameInvite XGameInviteUnregisterForEvent
XGameSave XGameSaveCloseContainer
XGameSave XGameSaveCloseProvider
XGameSave XGameSaveCloseUpdate
XGameSave XGameSaveCreateContainer
XGameSave XGameSaveCreateUpdate
XGameSave XGameSaveDeleteContainer
XGameSave XGameSaveEnumerateBlobInfo
XGameSave XGameSaveEnumerateBlobInfoByName
XGameSave XGameSaveEnumerateContainerInfo
XGameSave XGameSaveEnumerateContainerInfoByName
XGameSave XGameSaveGetContainerInfo
XGameSave XGameSaveGetRemainingQuota
XGameSave XGameSaveInitializeProvider
XGameSave XGameSaveReadBlobData
XGameSave XGameSaveSubmitBlobDelete
XGameSave XGameSaveSubmitBlobWrite
XGameSave XGameSaveSubmitUpdate
XGameStreaming XGameStreamingGetStreamAddedLatency
XGameStreaming XGameStreamingInitialize
XGameStreaming XGameStreamingRegisterClientPropertiesChanged
XGameStreaming XGameStreamingRegisterConnectionStateChanged
XGameStreaming XGameStreamingUninitialize
XGameStreaming XGameStreamingUnregisterClientPropertiesChanged
XGameStreaming XGameStreamingUnregisterConnectionStateChanged
XGameUI XGameUiSetNotificationPositionHint
XLauncher XLaunchUri
XPackage XPackageChangeChunkInstallOrder
XPackage XPackageCloseMountHandle
XPackage XPackageCreateInstallationMonitor
XPackage XPackageEnumerateChunkAvailability
XPackage XPackageEnumeratePackages
XPackage XPackageEstimateDownloadSize
XPackage XPackageFindChunkAvailability
XPackage XPackageGetMountPath
XPackage XPackageGetMountPathSize
XPackage XPackageGetUserLocale
XPackage XPackageInstallChunks
XPackage XPackageMount
XPackage XPackageUninstallChunks
XPackage XPackageUnregisterInstallationProgressChanged
XPackage XPackageUnregisterPackageInstalled
XPackage XPackageUpdateInstallationMonitor
XPersistentLocalStorage XPersistentLocalStorageGetPath
XPersistentLocalStorage XPersistentLocalStorageGetPathSize
XPersistentLocalStorage XPersistentLocalStorageMountForPackage
XSpeechSynthesizer XSpeechSynthesizerCloseHandle
XSpeechSynthesizer XSpeechSynthesizerCloseStreamHandle
XSpeechSynthesizer XSpeechSynthesizerCreate
XSpeechSynthesizer XSpeechSynthesizerCreateStreamFromText
XSpeechSynthesizer XSpeechSynthesizerEnumerateInstalledVoices
XSpeechSynthesizer XSpeechSynthesizerGetStreamData
XSpeechSynthesizer XSpeechSynthesizerGetStreamDataSize
XSpeechSynthesizer XSpeechSynthesizerSetCustomVoice
XSpeechSynthesizer XSpeechSynthesizerSetDefaultVoice
XStore XStoreCloseContextHandle
XStore XStoreCloseLicenseHandle
XStore XStoreCloseProductsQueryHandle
XStore XStoreCreateContext
XStore XStoreEnumerateProductsQuery
XStore XStoreUnregisterGameLicenseChanged
XStore XStoreUnregisterPackageLicenseLost
XSystem XSystemAllowFullDownloadBandwidth
XSystem XSystemGetAnalyticsInfo
XSystem XSystemGetConsoleId
XSystem XSystemGetXboxLiveSandboxId
XTaskQueue XTaskQueueCreate
XTaskQueue XTaskQueueCreateComposite
XTaskQueue XTaskQueueGetCurrentProcessTaskQueue
XTaskQueue XTaskQueueGetPort
XTaskQueue XTaskQueueRegisterMonitor
XTaskQueue XTaskQueueRegisterWaiter
XTaskQueue XTaskQueueSetCurrentProcessTaskQueue
XTaskQueue XTaskQueueTerminate
XTaskQueue XTaskQueueUnregisterMonitor
XTaskQueue XTaskQueueUnregisterWaiter
XUser XUserCloseHandle
XUser XUserCloseSignOutDeferralHandle
XUser XUserFindForDevice
XUser XUserFindUserById
XUser XUserFindUserByLocalId
XUser XUserGetDefaultAudioEndpointUtf16
XUser XUserRegisterForChangeEvent
XUser XUserRegisterForDefaultAudioEndpointUtf16Changed
XUser XUserRegisterForDeviceAssociationChanged
XUser XUserUnregisterForChangeEvent
XUser XUserUnregisterforDefaultAudioEndpointUtf16Changed
XUser XUserUnregisterforDeviceAssociationChanged

참고 항목

XThread API 참조