游戏不能多核运行的原因主要有以下几点:
任务依赖性:
游戏的运行往往是线性的,很多计算任务之间存在前后依赖关系,无法通过多线程同时执行。例如,在FPS游戏中,某个玩家被击中产生伤害,需要先计算出子弹轨迹,然后才能计算出伤害,这些计算只能在一条线程中先后完成。
逻辑顺序:
很多游戏逻辑需要按顺序执行,不能并行处理。例如,一个人烧水,水开了才能喝水,有前后依赖,不能并行。类似地,游戏中的许多操作也需要按照一定的顺序进行,无法通过多线程同时完成。
任务可分解性和结果可预期性:
游戏任务的可分解性和结果的可预期性较低,不像数据类工作那样容易实现多线程。游戏设计者往往难以将游戏逻辑巧妙地拆分成多个可以并行执行的任务。
硬件和软件优化:
目前大部分游戏都是针对单核或双核进行优化的,因此单核性能高的处理器在游戏中表现更好。虽然理论上计算性能等于主频乘以核数,但很多程序并不支持多核运算,尤其是在移动设备上。
玩家习惯和设计思路:
玩家从单核、简陋图形处理部件的时代过来,设计思路也倾向于单核优化。如果多核、多GPU的玩家多,问题可能会集中处理,因而会有所改进,但目前整体上多核优化仍然较为少见。
综上所述,游戏不能多核运行的主要原因是游戏任务之间的依赖性和逻辑顺序,以及硬件和软件优化的限制。虽然有些游戏可以通过多线程技术提高性能,但这需要较高的技术门槛和额外的设计努力。