当前位置: 华文问答 > 游戏

十字军之王3的多核优化是什么原理?

2020-11-05游戏

打仗跑战争运算线程,外交跑外交计算线程,商贸跑商贸计算线程。结算的时候等全部线程提交一个结果主线程再把日期往后拨动。

好处就是算商贸的时候外交不用等商贸算完再去跑外交,他算商贸的时候外交可以同时算。

平时各个运算模块互相独立,只有需要共享数据的时候需要加锁。这样除了在交互运算的时候会需要等待以外,其他时候都可以各自跑各自的数据。即使自己跑的算量大把自己卡住了,也不会影响别的线程算他的数。

算经济就跟泡麦片一样,要全部省份(上千个)去查一遍表,全部经济建筑加成累计,给你一个总数。外交和战斗就好算多了,总共几百个势力,几十场战斗,他们之间大部分时候又互相不干涉。那怎么搞比较好?自然是刷牙前的时候把水烧上,刷完牙你也烧完水,拿个结果走人。

甚至一个国家的外交和其他国家的数值没有关系,那更好了,一次启动5个线程同时算五个国家。你只需要在他们发生数据交互的时候做锁同步,其他时候随便他浪。