Earlier this month I found a link on Larry Osterman’s blog to an article by Herb Sutter entitled “The Free Lunch Is over: A Fundamental Turn Toward Concurrency in Software”. I strongly encourage to go and read that article now. It talks about the apparent ceiling that we are hitting in the performance capabilities of CPU’s and how in order for software to get the most out of upcoming multi-core processors software will need to be designed with concurrency in mind.

The interesting thing is that at the application architecture level this has been happening for some time. Software architects dealing with extreme performance requirements have been designing their applications to be scaled out not just across processor cores but entire farms of computers. What we will witness is this design philosophy filitering down into some aspects of business algorithm development.

I’m not saying that products like Microsoft Word are going to require multi-processor/multi-core machines, but the algorithm could detect the capabilities of the environment and spawn up a thread for each available core to process up a result set that had been broken up.

Platforms that work at a level of abstraction from the underlying OS like .NET are in the best position to ease developers into this new world because the runtime can make optimisations at execution time to split the workload, but thats not the whole picture.

While .NET implements a consistent asynchronous programming pattern which is supported by the compiler and exposes a number of the underlying concurrency primitives I’ve got to wonder how long its going to be before we start to see first class language constructs in mainstream languages to cater for concurrency like Paul D. Murphy’s data bound dispatcher which is kind of like a foreach statement where each data element is processed on a seperate thread.

Personally I think that your basic CRUD-style business application isn’t where you are going to find interesting uses of concurrency (unless you are running at the big end of town – 20,000 simultaneous users or more), instead I think it is going to be these more interesting ones where it will count.