This is the article I’ve been waiting for. I wrote about this before, but I wasn’t happy with the article I referenced. It was too hardware focused and doesn’t get to the real problem for software developers. Finally, an article has appeared by Herb Sutter, a really bright MS developer that explains the problem we are going to face over the next couple of years.
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
Found through Larry Osterman’s blog, which sheds some more insight into the problem:
Moore’s Law Is Dead, Long Live Moore’s law
To me, Larry’s blog has too much of a ‘doom and gloom’ feel to it. Not a good way to start the new year. ![]()
I don’t know if the chip manufacturer’s have hit a brick wall on the speed barrier. It seems like every time I read something to this effect, a major new breakthrough is invented and it gives us another 5 years to invent something else.
Anyhow, even if Moore’s Law is dead, the problem still exists. Herb Sutter does an excellent job of describing the problem we will face in the next couple of years. Bottom line is, multi-threaded programs are hard to write. Once you think you’ve solved all the race conditions, something pops up and bites you. As he says, “The vast majority of programmers today don’t grok concurrency”.
I have been suspecting this problem for some time now. Just look at the unoffical specs for the new consoles coming out. They are all multi-core chips. Think of a machine with 6-8 virtual cpus. On the desktop, hyperthreaded multi-core CPUs will be common in a years time. How do you write good code that fully utilizes these processors?
Unfortunately, I don’t think Herb Sutter’s article goes far enough to provide solutions. It is simply an alarm to make people sit up and recognize the problem. (Not exactly his fault, it’s the first article I’ve found that identifies the problem)
I am going to be looking forward to more articles like this in the near future. What can we do to make multi-threaded apps easier to write? Will it be a new software paradigm? Will it be a new programming language (as Herb points out, “the ISO C++ standard doesn’t even mention threads, and does so intentionally”)? Depending on how fast we hit the MHZ ceiling, it maybe necessary to find a solution very soon.