我们将“线程处理”定义为在不同处理器上同时运行不同的代码段。下图显示了单线程处理与双线程处理之间的差异。单线程代码在运行过程中连续执行。请注意,双线程代码有两个代码段在运行期间并发执行。通过同时运行这两个可并行的代码段,现在执行整个运行过程所用的时间变少了(请注意虚线区域)。

图 1 显示了图中的不均衡情况。这种不均衡情况是指两个并行代码块没有同时完成其执行任务。这两个块没有同步完成其执行任务的原因在于,它们要完成的工作量不相等。应该注意到这一点,因为正确均衡线程在游戏线程处理中是非常关键的。
图中的屏障表示所有线程完成其执行任务之前等待的时间。等待是很关键的,因为您不想让并行代码覆盖其串行代码的执行。(在本示例中,串行代码取决于并行代码段的结果。)
并行模型
有两种类型的并行模型:
数据分解和
功能分解。简言之,数据分解就是对单个功能进行线程处理,以同时在两个或多个数据块上操作。另一方面,功能分解必须将不同的功能代码块置于不同的线程上,以充分利用并行优势。
本文仅涉及到功能分解,原因有两个:a.) 与数据分解模型相比,它适用于更多游戏;b.) 实现这种分解更难一些。有关游戏中的两种不同并行模型的深入讨论,请参阅本文的“其他资源”部分。