Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In the context of C#, .NET 4/4.5 used for an application running on a web-server, what is the relationship between "Task Parallel Library" and "Task-based Asynchronous Pattern"?

I understand one is a library and the other is a pattern. But to dig deeper, is it like "The library is used by the pattern to enforce good practices". I'm also not clear if both are supported in .NET 4.0 (with await and async keywords)

Edit: Seems that await and async are only in .NET 4.5 ...

share|improve this question
One is a library that helps with running tasks in parallel. The other is a programming pattern for asynchronous tasks. They can work together. As an aside - you really should be linking to the sources of both phrases in your question. – Oded Nov 27 '12 at 20:12
clarified and linked up – DeepSpace101 Nov 27 '12 at 20:18
Read the articles you've linked. They explain it pretty well (the first sentence in the Task-based AP article clarifies your edit) – Steve Evers Nov 27 '12 at 20:22
Concurrency and asynchrony though handled similarly because they both involve non-deterministic execution from the perspective of their initiators, they are not in fact the same. That said, I think the TAP is just another way of saying CPS so have a read here – Jimmy Hoffa Nov 27 '12 at 20:40
async and await are C# features, not .Net features, although in the case of the Task class, the methods required by the compiler only exist in .Net 4.5. You can use async/await in .Net 4 using the 'async targeting pack': – Lee Nov 27 '12 at 22:22
up vote 1 down vote accepted

The TPL is a new(ish) framework that provides a simplified API for concurrent programming. The Task-Based Asynchronous Pattern is a framework design guideline that leverages the TPL to deliver consistently designed concurrent operations.

The async/await keywords are syntactic sugar that allow you to consume TAP APIs without diving into the details of continuation.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.