游戏中的多线程问题
比如像星际争霸2这样的多单位RTS游戏,如果每个兵分配2个线程,分别用于渲染和人工智能,更糟糕的是如果每个兵分配了更多的线程,又用于物理模拟等。
在处理条件竞争的时候,为了保持数据完整性,必须使用锁。
在频繁获得锁,释放锁的过程中将消耗大量的CPU资源。
锁的使用将大幅度降低程序的性能。
像星际争霸2这样的游戏,每个单位是如何使用线程的?是每个单位都分配了专用的线程,以处理该单位渲染和人工智能吗?
我觉得最好是根据CPU核心数量来决定使用线程的数量。
比如在4核CPU中,我们可以创建4个线程,1个线程用于渲染每个单位,2个线程用于处理每个单位的人工智能,1个线程用于模拟每个单位的物理特性。
也就是每个单位不再有专用于该单位的线程,每个线程将处理一组的单位。
不知道这样的想法可否用于实现多单位的RTS游戏。