Parallel Extensions

Theoris Innovation Series

On April 20, 2012 from 1:00 – 4:00 PM Theoris IT Services is hosting the next installment of its Theoris Innovation Series.  For this event Alex Gheith and I will be discussing many of the modern features of C# including:

  • LINQ
  • Dynamic Programming
  • Parallel Programming (including the upcoming async and await keywords)

This is a free event but please note that space is limited to the first 40 respondents.  For more information, please check the event site.

Advertisement

Speaking in Bloomington

A new .NET User Group has formed at Indiana University and I have the honor of being their first speaker.  Join us on Thursday, April 19 from 2:00 – 4:00 PM in room CG 2061 at the Kelley School of Business in Bloomington.  For this event I’ll be covering Parallel Programming in .NET 4. We may even look at a few examples of the upcoming async and await keywords – time permitting, of course.

Be sure to check the IU .NET User Group page for logistics information including a remote viewing location and streaming information.

I hope you can attend!

Speaking in Fort Wayne

If you missed my Parallel Programming in .NET 4 talk at IndyNDA on June 9th you now have another chance!  I’ll be giving the same presentation to the .NET Users of Fort Wayne (NUFW) on August 9, 2011 at 6:00 PM. Be sure to check the NUFW site for registration and logistics.

I hope to see you there!

NUFW Logo

June Speaking Engagement – IndyNDA

I’ll be speaking at the 126th meeting of IndyNDA. In this session I’ll cover Parallel Programming in .NET 4 and as a bonus show some of the features included in the Visual Studio Async CTP.  I hope to see you there!

Date/Time:
6/9/2011 6:00 PM
(5:30 registration)

Location:
Management Information Disciplines, LLC
9800 Association Court
Indianapolis, IN 46280
[Map]

Be sure the check the IndyNDA site for full logistics and other information.

Parallel Programming in .NET 4

Over the years software development has relied on increasing processor clock speeds to achieve better performance.  For better or worse though the trend has changed to adding more processing cores.  Generally speaking, software development hasn’t adjusted to account for this transition.  As a result many applications aren’t taking full advantage of the underlying platform and therefore they’re not performing as well as they could.  In order to take advantage of multi-core and multi-processor systems though we need to change the way we write code to include parallelization.

Historically, parallel programming has been viewed as the realm of highly specialized software where only experts dared to tread.  Parallel programming aims to improve performance by executing multiple operations simultaneously.  The .NET framework has always supported some level of parallel programming.  It has included threads and locks all the way back to the early days of the framework.  The problem with threads and locks though is that using them correctly is difficult and error prone.  Where do I need locks?  Can I lock on this?  Should I use lock, ReaderWriterLock, or ReaderWriterLockSlim?  How do I return a result from another thread?  What’s the signature for the ThreadStart delegate passed to the Thread constructor?  These questions haven’t even started to touch on pooling, deadlocks, exception handling, cancellations, or a multitude of other considerations.  .NET 4 doesn’t eliminate these classes but builds upon them.
(more…)