时间敏感线程

游戏希望从系统中获得尽可能多的性能。 为支持此功能,某些游戏线程是时间敏感的,因为它们不希望在这些线程上执行任何意料之外的长时间运行的操作。 时间敏感线程的一个典型示例是用于游戏呈现的线程。

游戏运行时服务 (GRTS) 让识别在时间敏感线程上调用哪些 API 是不安全的变得容易一些。

注意

可以标识 GRTS API,因为它们以“X”开头 (例如 XGameSaveInitializeProviderXGameGetXboxTitleId) 。

为了使识别系统正常工作,游戏需要在时间敏感线程上调用 XThreadSetTimeSensitive。 此 API 将在可由 GRTS API 查询的线程本地存储中存储一个位。

当给定相同的输入时,被认为是可以在时间敏感线程上安全进行调用的 GRTS API 将表现出一致的运行时性能。 如果 GRTS API 对时间敏感线程的调用不安全,则 GRTS API 将对 XThreadAssertNotTimeSensitive 进行内部调用。 如果在已标记为时间敏感的线程上调用了不安全的函数,则会发生以下情况。

  • 如果连接了调试程序,则会触发一个断言,并将冲突通知开发者。 开发者还将获得有关之后如何全局禁用断点的指导。
  • 一个 Windows 事件跟踪 (ETW) 事件发出,可以在 XbWatson(NDA 主题)要求授权中查看。

适用于时间敏感线程的不安全函数

以下 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 参考