This may be the first of a series of blog post on Parallel Programming with .Net 4.0. It is a “maybe” at this point in time, in that I intended to get into this topic over the coming weeks, but one never knows what else may crop up.
This started off being a look at the synchronised collections support in .Net 4.0, but I’ve decided that I should include some other topics. The other big inclusions are intended to be:
- Parallel Looping constructs,
- Parallel LINQ, which the parallel looping leads into, and
- The Task Class addition to .Net 4.0 Framework.
When you include those, you pretty much have a Parallel programming .Net 4.0 “in a nutshell”. This series may have the impetus to look into some of the more “esoteric”, “subtle” and all-round deeper issues associated with the development, implementation, testing, and deployment of parallel solutions in .Net. But, wait and see, I could come up with some “gems”, and “pearls of wisdom” on the way.
This is the start of a list of “good” resources on parallel programming in .Net. I’ll try and post further blog posts on the topic as I find more resources (I’ve some PFD’s salted away on the topic as well I’ll try and dig up).
System.Collections.Concurrent Namespace This is the .Net namespace which contains some very useful “pre- cooked” collections which can be used in concurrent (parallel) programming. My preference is to always look at these collections first, and build my own concurrent collection as a last resort.
System.Threading.Tasks Namespace This is the >net namespace which contains the Task object, and the associated infrastructure built into .Net for running parallel Tasks. Again, my preference is to look here first, and only resort to using the Thread Class as a last resort when things do not fit with supplied .Net support.
Parallel Programming in the .NET Framework This is a “top level” page, which has links to much of the .Net Parallel support.
Threading in C# – Part 5 – Parallel Programming This looks to be very good on LINQ and Parallel aspects which can be invoked in the LINQ context. There is also some details on the Task, and associated .Net Framework classes. I’ll be reading this very carefully (again, it will not for the first time I refer to these pages).
Patterns Of Parallel Programming This is a link to a PFD which contains “much” detail on C# .Net Parallel Programming. I’ve yet to digest this one (118 pages is a bit much for one sitting, I’ll have a couple of “bites at this cherry”).
This is just a start of a list of resources. I’ll post further lists of resources, as I dig into the topics I wish to cover.
- Introduction to Parallel Computing (computing.llnl.gov)
- Presentation:How to Think about Parallel Programming: Not! (infoq.com)
- Back to (Parallel) Basics: Don’t Block Your Threads, Make Async I/O Work For You (hanselman.com)
- Dataflow Programming: A Scalable Data-Centric Approach to Parallelism (java.sys-con.com)
- InfoStreams Alert – Multicore (dorai.wordpress.com)
- Programming Microsoft LINQ in Microsoft .NET Framework 4 (oreilly.com)
- LINQ Performance Tuning: Using the LookUp Class (craigwatson1962.wordpress.com)