Visual Studio 2010 Beta1 has been released, and it is a full install version. The team has been busy, busy busy since the CTP release last fall to deliver most of the APIs and objects we’ve blogged about here into Beta1. So I wanted to take a moment to summarize what’s new in the Beta for the Parallel Pattern Library, the Asynchronous Agents Library and the Concurrency Runtime.
You can find the official reference documentation and walkthroughs in the MSDN Library here.
What’s new in the Parallel Patterns Library
The Parallel Patterns Library (PPL) provides an imperative programming model that promotes scalability and ease-of-use for developing concurrent applications. In general the library’s surface area remains largely unchanged, with a few high impact additions. You will also find it more stable, more robust, faster, and more scalable – lots of goodness!
- Added support for exception handling in task_group.
- The new is_current_task_group_canceling API helps query cancellation status.
- The combinable<T> object has been added for helping avoid races on reductions and accumulations.
- We’ve made significant performance improvements to our parallel loops: parallel_for, parallel_for_each and parallel_invoke
- critical_section and reader_writer, the cooperative synchronization primitives that we blogged about recently, are now in.
- We’ve also included a manual reset event called Concurrency::event.
What’s new in the Asynchronous Agents Library
The Asynchronous Agents Library (or just Agents Library) provides a programming model that enables you to increase the robustness of concurrency-enabled application development. The Agents Library is a C++ template library that promotes an actor-based programming model and in-process message passing for fine-grained dataflow and pipelining tasks. The Agents Library builds upon the scheduling and resource management components of the Concurrency Runtime.
Here’s a summary of what’s we’ve added and revised in the Agents library:
- Added the choice, join and multitype_join message blocks to allow users to wait on a set of messages; choice waits for any message, join waits for all messages of a single type, and multitype_join waits for all messages and allows for multiple different types.
- Renamed the transform message block to transformer (we didn’t want Concurrency::transformer to conflict with std::transform)
- Added functor support to the pipeline message blocks call and transformer
- Building custom message blocks is now easier due to some refactoring.
What’s new and improved in the Concurrency Runtime itself
The underlying Concurrency Runtime has undergone significant feature improvements and performance enhancements, many of which we have been discussing already on this blog. These changes will have improvements to everything built on top of the runtime, including the Parallel Patterns Library and the Agents Library.
- Added support for User Mode Scheduled Threads on Windows 7 RC (see our blog posts on the Concurrency Runtime’s support and go deep on Win7 UMS)
- Revised and simplified scheduler policies and APIs for constructing schedulers.
- Added dynamic resource management for load balancing between multiple scheduler instances.
- Further improved load balancing by applying the hill climbing technique to thread injection.
- Added the concurrent sub-allocator for high performance allocations and frees on multiple threads
Call to Action
Download and install Microsoft Visual Studio 2010 Beta 1 today. Impress your friends and coworkers by being among the first to learn and use our libraries. Provide early and critical feedback on our forum that will shape the way that these libraries are ultimately released.
See this blog post on the value of your feedback: On Achieving Perfection –or– Why We Love Your Feedback (and Why You Can Love Giving It).