June 2008 CTP – Parallel Extensions to the .NET FX

This week we released an update to the community technology preview (CTP) of Parallel Extensions to the .NET Framework.


Parallel Extensions simplifies development of concurrent applications by providing library-based support for introducing concurrency into applications written with any .NET language, including C# and Visual Basic.NET.


The library is made up of the following components:

  • The Task Parallel Library (TPL), which provides support for imperative data and task parallelism.

  • Parallel LINQ (PLINQ), which provides support for declarative data parallelism.

  • Coordination Data Structures (CDS), which provide support for work coordination and managing shared state.

This CTP is for developers who write applications or libraries using .NET and who want to easily express concurrency in their code.  Parallel Extensions works with any .NET language, though it is best used in languages that support anonymous methods or lambda expressions, like C#, Visual Basic, and F#.  Parallel Extensions requires the .NET Framework 3.5 (either RTM or SP1).


This CTP, which is an upgrade from the one released last November, provides several additions and improvements including changing the prototype runtime used by the Task Parallel Library (TPL) with one built from the ground up to be more robust, efficient, and scalable.  TPL also exposes new functionality, including methods for continuations.  PLINQ has been outfitted with several new methods, including those for exposing order-preservation capabilities in a new manner and it has been modified to run on top of TPL.  There are also new synchronization and coordination types to enable the development of parallel applications.


The CTP can be downloaded here.



Comments (17)

  1. This week S. Somasegar , Senior Vice President Developer Division, announced on his blog that we’ve released

  2. Jose says:

    If i create a SQL CLR UDF and/or stored proc, can my .net clr code (the .net assembly tha is deployed to the sql server) use the TPL, so that portions of my .net SQL CLR code can run in parallel across multiple CPU cores?

  3. Hans says:

    I am still wondering what could be an advantage over CCR.

  4. S. Somasegar , Senior Vice President Developer Division heeft deze week op zijn blog geannounceerd dat

  5. June 2008 CTP – Parallel Extensions to the .NET FX

  6. Havok, ya disponible gratuitamente : El motor de físicas más empleado en el mundo de los videojuegos

  7. toub says:

    Hi Jose-

    To do its job well and to maintain high reliability guarantees, SQL Server needs to have strict control over code that executes in its processes.  Explicitly creating new threads and doing synchronization between threads in SQL/CLR code is something SQL Server tries to avoid, and thus most of the types in the System.Threading namespace, including the Task Parallel Library, are marked with HostProtectionAttributes that prohibit their use within SQL Server.  This potentially can be worked around by loading the assemblies into SQL Server with the UNSAFE permission set, but doing so could open the system up to greater risk.  Another interesting facet to the question is that, in many situations, an instance of SQL Server fields many requests simultaneously, and thus it already can provide a significant amount of concurrency, even without individual SQL/CLR procedures being parallelized.  The main point here is that SQL Server already does a good job at parallelizing, so it’s not clear how much additional value there is to gain by using Parallel Extensions in SQL/CLR code. All that said, we are investigating what kind of support we can reasonably provide for this scenario moving forward.


    Stephen Toub

  8. Alpa Agarwal says:

    Hello Hans,

    The Concurrency and Coordination Runtime (CCR) and the Task Parallel Library (TPL) are complementary technologies. TPL, which provides support for imperative data and task parallelism, is well suited for synchronous parallelism and patterns such as parallel loops. The Concurrency and Coordination Runtime is well suited for orchestrating many asynchronous components and handling asynchronous I/O in a clever manner. Though TPL and CCR may seem slightly redundant on the surface, we encourage you to try our CTP of Parallel Extensions to the .NET Framework and to provide us with feedback.


  9. [原文地址]: June 2008 CTP – Parallel Extensions to the .NET FX [原文发表时间]: Monday, June 02, 2008 2:18 PM 这周

  10. hooyes says:

    what?,i don’t know what you say.

  11. David Arno says:

    Last week, Microsoft released a new Community Technology Preview (CTP) of the .NET Task Parallel Library…

  12. at 06/02, Microsoft just released the latest CTP of Parallel Extension to .NET 3.5 (as PFX later), available

  13. Randy Smith

    4601 S Crysler

    Independence,   mo 64055


  14. Albert says:

    Could Parallel Extensions be used in an unmanaged C++ application?

  15. toub says:


    You could use Parallel Extensions from a native application through interop (such as by using C++/CLI to create a wrapper for the native application to consume), but the results would likely be less than stellar.  Managed/native interop is relatively expensive, and unless you were doing a serious amount of work in a task or in the body of a loop, you wouldn’t want each invocation to have to make such a transition, as the overheads would likely be prohibitive.  You can, however, use Parallel Extensions from a managed application written in C++, and there’s actually an example of doing so in the samples included with the June 2008 CTP (there are also examples for other languages, including F# and Visual Basic).

    That said, the same team that’s developing Parallel Extensions to the .NET Framework is also working on extensive parallelism support for native applications.  No CTP of that work has been released yet, but you can read more about it at http://blogs.msdn.com/nativeconcurrency/.


    Stephen Toub

  16. rednael says:

    Please, also read the following article:


    It’s an article about basic parallel programming. Examples in C# .Net included. Also, it describes a lightweight parallel framework to work with tasks. Opposed to some other frameworks, this one is very light and very easy to use.

    After reading this article, you should be able to write code using parallelism.



  17. Randy P. Smith says:

    Randy Smith

    4601 S Crysler

    Independence, mo 64055