Having just purchased a 6-core Phenon

I'll be watching the progress of MT very closely. From my early impressions of this tech I can tell you that the technology is really well suited to running many small threads rather than 2-3 large ones. I'll be looking into ways Spring can further exploit this such as loading individual models in seperate threads, implementing threaded pathfinding, moving individual AIs and widgets to their own threads, ecetera.
Not trying to imply this will be easy or should happen tomorrow but I'm certain it's the mindset serious developers should be adopting towards all future projects.
With CPU speeds maxing out around 4Ghz I'm convinced we'll be seeing desktop systems with up to 100 cores within 10 years. There are already 64-core processors in the server/hpc world.
Unless of course someone breaks the "silicon barrier" or develops something entirely new and cheap in the next year of so and speeds start rising again.
I know someone heavily involved in quantum computing and I'm quite certain from the things he talks about that we won't be seeing quantum computers on our desks any time soon. Same for optical computers, not sure what happened to that but I've never even heard of one being built let alone in mass production. Organic computers could in theory run as fast as our brains but again we're not even seeing systems made up of a few neurons, let alone anything as powerful as even a simple calculator. Even then researchers are fairly certain out brains are massively parallel so organic systems would simply increase the need for parallel software rather than diminish it.
It might be worth mentioning at this point the challenges for Spring. Most devs understand this stuff but I'm writing it for those who are new to the concepts:
* Lua doesn't run threaded. It has 'coroutines' but they share a thread. You can run run multiple Lua states in seperate threads but they won't be able to share data directly and will need some sort of inter-thread communication and synchronisation.
* Other libraries are similar. OpenGL for example and probably OpenAL (audio) and several others (I don't really know off-hand).
* Threaded software becomes extremely unpredictable. The sequence of events and results can change based on factors like the load a given core is under and OS scheduling in general. Synced code can't have ANY uncertainty or the game will desync. What that means in practice is the Sim thread will be extremely difficult to make parallel.
* Some types of logic require a constant feedback of previous results (recursion). This sort of thing cannot be done in parallel, at least not without introducing unacceptable overhead.
* Similarly some operations work better with access to data from a local cache. Pushing code and data to other cores can be a serious overhead in many cases worse than maxing out a single core.
* Threaded applications are notoriously difficult to debug. You not only have to know what's happening in time, you often have to know what's happening in space (ie, in different locations at the same time). Many traditional debugging tools and methods (even logging) are often not up to the task of presenting this information clearly).
Hope that's a pretty accurate assessment and that it clarifies a few things for those new to the concepts.