Updated 2011.01.23 15:37 +0100 |
Surely all software developers know that creating good multithreaded applications are not easy - even if they haven't tried it. For several years we've all known that at some point in time we've got to have to improve on that stuff. Now more than ever good concurrency programming developers are needed. With the advent of dual core and quad core CPU/GPU processors and increasingly focus on performance on enterprise level you as developer simply need to do this better.
But most developers today are not ready for this. There is a huge lack of understanding of concurrency programming and this will evidently slow down the process on producing good performing software on the ever expanding hardware platforms. Software will be the bottleneck of the performance, not the hardware.
Of the number of programmers available today I would argue that at most 15-20% percent of them know about how to develop for multithreaded platforms.
To get an idea where we are and the problems we're facing we can turn to a wonderful insightful presentation made by Herb Sutter, now employee at Microsoft and very active in the ISO/ANSI C++ Standard Committees (I believe he is the chairman in the ISO C++ Standard Committee).
So what can you do as developer to prepare yourself?
If you're product manager plan and design your applications to be task oriented (transactional programming) as much as possible and ensure you hire developers that are ready to take the transition to concurrent programming.
Update January 8th, 2007: From today's Podtech.net podcast with Bill Gates and bloggers from CES 2007, Mr. Gates actually talks about this concurrency problem. Pretty amazing. Click into the podcast and hear the part from about 31:35 min to 34:50 min.
Update February 27th, 2007: For C++ gurus the problem originates really back to how the C++ memory model should be designed. For some insight in this see:
Update August 5th, 2007: Intel has recently updated their open source library for threading called Threading Building Blocks (TBB) (see also wikipedia entry). You may find the devx.com article about it interesting.