Parallel Extensions

Parallel Extensions was the development name for a managed concurrency library developed by a collaboration between Microsoft Research and the CLR team at Microsoft The library was released in version 40 of the NET Framework1 It is composed of two parts: Parallel LINQ PLINQ and Task Parallel Library TPL23 It also consists of a set of coordination data structures CDS – sets of data structures used to synchronize and co-ordinate the execution of concurrent tasks4


  • 1 Parallel LINQ
  • 2 Task Parallel Library
  • 3 Architecture
  • 4 See also
  • 5 References
  • 6 External links

Parallel LINQedit

PLINQ, or Parallel LINQ, parallelizing the execution of queries on objects LINQ to Objects and XML data LINQ to XML PLINQ is intended for exposing data parallelism by use of queries2 Any computation on objects that has been implemented as queries can be parallelized by PLINQ However, the objects need to implement the IParallelEnumerable interface, which is defined by PLINQ itself Internally it uses TPL for execution45

Task Parallel Libraryedit

The Task Parallel Library TPL is the task parallelism component of the Parallel Extensions to NET6 It exposes parallel constructs like parallel For and ForEach loops, using regular method calls and delegates, thus the constructs can be used from any CLI languages The job of spawning and terminating threads, as well as scaling the number of threads according to the number of available processors, is done by the library itself,3 using a work stealing scheduler7

TPL also includes other constructs like Task and Future A Task is an action that can be executed independent of the rest of the program In that sense, it is semantically equivalent to a thread, except that it is a more light-weight object and comes without the overhead of creating an OS thread Tasks are queued by a Task Manager object and are scheduled to run on multiple OS threads in a thread pool when their turn comes

Future is a task that returns a result The result is computed in a background thread encapsulated by the Future object, and the result is buffered until it is retrieved3 If an attempt is made to retrieve the result before it has been computed then the requesting thread will block until the result is available6

The other construct of TPL is Parallel class TPL provides a basic form of structured parallelism via three static methods in the Parallel class:

ParallelInvoke Executes an array of Action delegates in parallel, and then waits for them to complete ParallelFor Parallel equivalent of a C# for loop ParallelForEach Parallel equivalent of a C# foreach loop


The main concept in the Parallel Extensions to NET is a Task, which is a small unit of code, usually represented as a lambda function, that can be executed independently Both PLINQ and the TPL API provides methods to create the Tasks - PLINQ divides a query into smaller Tasks, and the ParallelFor, ParallelForEach and ParallelInvoke methods divide a loop into Tasks

PFX includes a Task Manager object which schedules the Tasks for execution A Task Manager contains a global queue of Tasks, which are then executed In addition, it also encapsulates multiple threads onto which the Tasks are executed By default, as many threads as there are processors or processor cores on the system are created, though this number may be manually modified Each thread is associated with a thread-specific queue of Tasks When idle, each thread picks up a batch of Tasks and puts them on its local queue, where they are then executed, one by one If the global queue is empty, a thread will look for Tasks in the queues of its peers, and will take the Tasks which have been in the queue the longest task stealing When in execution, the Tasks will be executed independently, with the change in state of one Task independent of others As a result, if they use a shared resource, they still need to be synchronized manually using locks or other constructs

See alsoedit

  • Concurrency and Coordination Runtime
  • Joins
  • Cilk/Cilk Plus - comparable technology for C and C++
  • Grand Central Dispatch - comparable technology in Mac OS X 106 developed by Apple
  • Java Concurrency - comparable technology in Java also known as JSR 166
  • Threading Building Blocks TBB - comparable technology for C++ available for many systems created originally by Intel also open source
  • Thread pool pattern
  • Task parallelism


  1. ^ "What's New in the NET Framework 4" Retrieved 2011-09-21 
  2. ^ a b "Programming in the Age of Concurrency: Concurrent Programming with PFX" Retrieved 2007-10-16 
  3. ^ a b c "MSDN Magazine: Task Parallel Library" Retrieved 2007-10-16 
  4. ^ a b "June 2008 CTP - Parallel Extensions to the NET FX" Retrieved 2008-08-06 
  5. ^ "More powerful aggregations in PLINQ" Retrieved 2008-08-06 
  6. ^ a b Duffy, Joe 2009 Concurrent Programming on Windows pp "887–929" ISBN 032143482X 
  7. ^ Leijen, Daan; Schulte, Wolfram; Burckhardt, Sebastian 2009 "The Design of a Task Parallel Library" ACM SIGPLAN Notices 44 10 doi:101145/16399491640106 

External linksedit

  • Parallel FX CTP June 2008
  • Parallel Computing Developer Center

Parallel Extensions Information about

Parallel Extensions

Parallel Extensions
Parallel Extensions

Parallel Extensions Information Video

Parallel Extensions viewing the topic.
Parallel Extensions what, Parallel Extensions who, Parallel Extensions explanation

There are excerpts from wikipedia on this article and video

Random Posts

Social Accounts

Facebook Twitter VK
Copyright © 2014. Search Engine