在单线程计算系统中,一次执行一条指令,并且一次产生一个结果。加载和完成程序的时间取决于 CPU 需要完成的工作量。
多线程是一种编程方式,利用了 CPU 在多个核心上同时处理多个线程的能力。这种情况下不是逐个执行任务或指令,而是同时运行任务或指令。
默认情况下,在程序的开头会运行一个线程。这就是“主线程”。主线程会创建新线程来处理任务。这些新线程并行运行,通常在完成后将其结果与主线程同步。
如果有一些长时间运行的任务,这种多线程方法很有效。但是,游戏开发代码通常包含许多一次执行的小指令。如果为每个指令创建一个线程,最终可能会有许多线程,每个线程的生命周期都很短。这种情况下可能会挑战 CPU 和操作系统处理能力的极限。
设置一个线程池可以缓解线程生命周期的问题。但是,即使使用线程池,也可能会同时激活大量线程。线程数多于 CPU 核心数会导致线程相互竞争 CPU 资源,进而造成频繁的上下文切换。上下文切换是这样一个过程:在执行过程的中途保存一个线程的状态,然后处理另一个线程,再然后重建第一个线程以继续处理该线程。上下文切换是资源密集型的过程,因此应尽可能避免。