Thanks for those saves to everyone.
I was able to confirm my theory that with a few more performance improvements the multithreading in C2C becomes completely useless. It is already not really helping much in terms of turn times as it only gives the cpu more work to do. Also the necessary thread synchronization code slows all the singlethreaded code like the unit turn processing down.
The multithreaded spawn and property systems never really did much they where just two of AIAndy's programming exercises.
The multithreaded city turn pipeline that Koshling added worked at the time that he added it. But back then the city turn processing was really slow because of some bad programming and inefficient code. It's much faster these days and there are still things to improve. I really don't think multithreading is a valid way to fix inefficient code but it's a nice programming exercise.
That's why i'm planning to remove all the multithreading from C2C to make it more efficient.
<Define>
<DefineName>NUM_CITY_PIPELINE_THREADS</DefineName>
<iDefineIntVal>4</iDefineIntVal>
</Define>
The current default is 4 for:
Code:<Define> <DefineName>NUM_CITY_PIPELINE_THREADS</DefineName> <iDefineIntVal>4</iDefineIntVal> </Define>
Should the Team reduce this "default" to at least 2 for now, till you have completed your work? Would this help turn times even a little?
I considered going back to rewriting it some times but then I think about the ancient compiler and long debug times ...
I
Good to see you again AIAndy!