The Concurrency Kit is a .NET / Mono kit that includes a port of the Task Parallel Library and extends it to support Fibers, Coroutines, and Unity. Fibers allow code paths to execute concurrently using a single thread by leveraging the co-operative yielding behavior of coroutines.

// Start task 1

var t1 = Task.Factory.StartNew(() => PatHead());

// Start task 2

var t2 = Task.Factory.StartNew(() => RubTummy());

// This task will complete when t1 and t2 complete and

// then it will continue by executing a happy dance.

Task.WhenAll(t1, t2).ContinueWith(t3 => HappyDance());

Because code written in this manner is designed with concurrency in mind, tasks can run in parallel across multiple threads or as concurrent fibers on a single thread by changing out the task scheduler. This flexibility makes it easy to write and maintain portable asynchronous code that scales.

Interoperability

Use the feature rich asynchronous task model in your designs.

publicclass HttpClient {

public Task<HttpResponseMessage> GetAsync(

string requestUri);

public Task<HttpResponseMessage> PostAsync(

string requestUri,

HttpContent content);

}

Usability

Start a background task using the thread pool and complete the operation on the main thread