You all will probably laugh me right out of the forum but....
Let me start out yes, I was a procedural programmer for years (Assembly, BIOS, embedded systems, and some obscure microprocessors) and moved into object oriented programming back well starting with Visual Studio 6. (Yes, I know that the Intel compiler rocks, so does microsoft's macro assembler).
Anyways, using a large scale MSMQ (Microsoft Message Queing) we wrote singleton threads and on some objects used mutex and semaphore style locking paradigms. You could see in my workstation (a dual XEON 603pin) the threads running from the applications eating memory releasing memory etc.
Now, with all this quad core; hyper threading (marketing hype) what does it really mean for the future of software design. I mean if you want mean and lean then pop into assembly to do your math in C++. But hmm, do I have to change older software design strategies to make the threads more 'nice' to the newer processors?
This probably makes no sense whatsoever; I should go back to skool.
If your applications are already threaded to play nice with multiple CPU/Cores, then there is no need to redesign them for newer processors. Most applications that need to be redesigned are the ones that were built to use as little thread as possible. Even in that case it all depends on the overall system design.