Concurrency in programming – now more important.

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.

Advertisements

3 thoughts on “Concurrency in programming – now more important.

  1. Paul D. Murphy

    Hey thanks for the link Mitch. 🙂

    one Cavaet about that dispatcher. Your event handlers must be thread safe (e.g. don’t access members without a lock). I’m re-working it with a class to do the processing instead of an event handler to make sure that all the potential threading issues are contained in the dispatcher.

  2. Mitch Wheat

    Hey Mitch!

    First class language constructs in mainstream languages that cater for concurrency have been around for quite some time.

    Fortran 90, OCCAM, Parallel C, many of the maths libraries targeted at CRAYs, connection machines etc. (OK! that last one didn’t really count..)

    I used them back in the 90’s (showing my age!)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s