“There ain’t no such thing as a free lunch.” R. A. Heinlein, The Moon Is a Harsh Mistress
Herb Sutter has posted :The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software which will appear in Dr. Dobb’s in March 2005 and in a briefer version in C/C++ Users for February 2005.). This is the sort of things I’ve covered under MultiCore
He covers several points: the last 30 years of improved processor performance were via clock speed, execution optimization, and cache. Sequentially written code was able to take advantage of these without change. This was the free lunch. Performance gains in the foreseeable future will be driven by hyperthreading, multicore and cache. Hyperthreading multicore will have nearly no impact on sequentially written code. Code will have to be re-written for Concurrency: parallel, multi-threaded, multi-process. This is really hard and not all problems are inherently parallelizable. The free lunch is gone.
Tim Bray concurrently covered this in Software in the TLP Era and offers some strategies.
I think the most important fact to keep in mind is that understanding threading behavior is no longer required only of embedded engineers; normal server and client application developers need to understand the tools and tradeoffs.