No, the multi-thread option has been in from the beginning. It is an entry in the Prefs.ini, as is the AI setting. But the AI setting is not working yet, I'm pretty sure. There has been some other threads on it as well. Setting the value to 1 gets changed back to 0 by default.
These are the two entries in the Prefs.ini: HyperthreadEnhancement=1 AllowCPUIntensiveAlgorithms=0 |
You don't understand the difference. Hyperthreading is an Intel CPU ability that is not the same as Multi-threaded programs. Below is a quick explanation of the difference. Keep in mind this is a basic version with no guarantees that it is complete nor accurate in all cases. It also does not insinuate that any of this stuff was invented on PCs or by Microsoft.
Before Hyperthreading and dual cores, a PC ran by executing a single instruction at a time. Even with multi-tasking under windows, it still only exectued a single instruction at a time but switched between programs (called a context switch) so quickly that to the user it was doing multiple things at once but in reality it was only doing 1. Each thread got what was called a timeslice, basically a small part of the CPUs time, to do something. Now a thread is a single execution path in a program. Earlier programs were all single threaded which meant the program only did one thing at a time. Later versions of Windows introduced multi-threaded programming to mainstream PCs. A multi-threaded program is multiple execution paths inside a single process (program) so that multiple things can be happening at the same time from a programs perspective. Whether or not it is simultaneous depends on the hardware but the program does not know about that. But basically the program could have one thread calculating an algorithm while another is drawing a window in the same program. Care has to be taken with multi-threading to avoid things like one thread changing a variable that another is using etc.
Hyperthreading is the ability to run more than one thread simultaneously (well kind of simultaneously) by Intel CPUs that has this capability. It is a hardware capability. This is similar to but not quite the same as a dual core processor. It can be threads from two different programs or two threads from the same program. They are executing in parallel with some exceptions such as access to shared system resources such as memory.
A dual core processor has two distinct cores with their own cache memory such that they as close as can be to executing two (or however many cores there are) things simultaneously but still has a single path access to certain things like drives.
So, hyperthreading is the hardware capability to run multiple threads but does not give a single threaded program the ability to do multiple things at once (multi-threaded capability). It just runs multiple threads from whatever program the OS gives it and improves in some cases the responsiveness of those programs that are multi-threaded. Dual cores take the hyperthreading a step further but again does not give a single threaded program any additional capabilities.
Windows programming is based on events. You press a button on a mouse and you get a message from the OS saying the button has been pressed. If your code is not watching closely for events such as that, the program might seem sluggish because you are doing other things and occasionally looking for messages from the OS. While that gives you the ability to do other things in the background such as the AI, it usually means an unresponsive UI (user interface) which is annoying to users. This is why I say it may have to do with whether the program is multi-threaded. If not, doing things with the AI during a turn might cause UI problems. Unfortunately, multi-threaded programs are more complicated to do and can introduce bugs that are difficult to find.
For those interested, this relates somewhat to the discussion about PS3 and its CPU design. It is a multi-core design and there are a lot of discussions out there about if/why this is more difficult to program than XBox etc.
For those that have a background in what I have discussed above, I realize that I have taken some liberties in what I have said and left some things out. I did this for clarity or at least an attempt at it.