I'm a geekette who enjoys playing with new technology for software developers. I work as a Developer Evangelist for Microsoft. My current focus is on machine learning and big data on Azure.
In my Parallel Programming blog series this week, we’ve looked at:
I want to conclude by frantically listing some other parallel support that I didn’t have time to tell you in a week. :) And this is *not* an all-inclusive list!
Thread Pool Improvements
The parallel computing team at Microsoft have made some wicked-cool improvements and optimizations to the Thread Pool, including using work-stealing local queues. I’ve described them in an earlier blog post.
Concurrent Collection Classes
.NET 4.0 provides a number of thread-safe collections: a ConcurrentQueue, ConcurrentStack, ConcurrentBag, and ConcurrentDictionary.
Various Sync Primitives
Some other random cool classes that support parallelism in .NET 4.0 are:
Support for Native Development
Being a .NET girl myself, I’ve focused on the managed code parallel computing support this week. However, there is a ton of support for native code (C++) development in the form of the Concurrency Runtime. A good starting point to learn about this is http://msdn.microsoft.com/en-us/library/dd504870.aspx.
If you’re into parallel computing, you should keep an eye on these great sites:
In conclusion, parallel programming really should matter to you as a software developer. Moore’s Law (“The number of transistors in a chip will double every 2 years”) has reached a limit due to the amount of heat generated by that many transistors. Therefore, the way to gain faster performance is shifting from building faster cores to building multiple cores. We as software developers need to understand how to design and write code to take advantage of those multiple cores. The support in .NET 4.0 for parallelism will hopefully make this process easier.