时间敏感线程
游戏希望从系统中获得尽可能多的性能。 为支持此功能,某些游戏线程是时间敏感的,因为它们不希望在这些线程上执行任何意料之外的长时间运行的操作。 时间敏感线程的一个典型示例是用于游戏呈现的线程。
游戏运行时服务 (GRTS) 让识别在时间敏感线程上调用哪些 API 是不安全的变得容易一些。
注意
可以标识 GRTS API,因为它们以“X”开头 (例如 XGameSaveInitializeProvider 或 XGameGetXboxTitleId) 。
为了使识别系统正常工作,游戏需要在时间敏感线程上调用 XThreadSetTimeSensitive。 此 API 将在可由 GRTS API 查询的线程本地存储中存储一个位。
当给定相同的输入时,被认为是可以在时间敏感线程上安全进行调用的 GRTS API 将表现出一致的运行时性能。 如果 GRTS API 对时间敏感线程的调用不安全,则 GRTS API 将对 XThreadAssertNotTimeSensitive 进行内部调用。 如果在已标记为时间敏感的线程上调用了不安全的函数,则会发生以下情况。
- 如果连接了调试程序,则会触发一个断言,并将冲突通知开发者。 开发者还将获得有关之后如何全局禁用断点的指导。
- 一个 Windows 事件跟踪 (ETW) 事件发出,可以在 XbWatson(NDA 主题)要求授权中查看。
适用于时间敏感线程的不安全函数
以下 GRTS API 函数不能安全地在时间敏感线程上调用。 所有其他 GRTS API 函数都是时间敏感安全的,可以时间敏感线程上调用它。