Parallel Extensions


Mit der nächsten .Net Version wird eine deutliche Vereinfachung der asynchronen Programmierung einher gehen.

C# und VB.Net werden um die Schlüsselwörter async und await erweitert. Async markiert eine Methode oder einen Lambda Ausdruck und await wartet auf den Abschluss eines Tasks ohne zu blockieren.

Beispiel:

public async void ProcessPage(Uri url)
{
  Task<string> downloader =  new WebClient().DownloadStringTaskAsync(url);
  string pageData = await downloader;
  // ... process ...
}

Await erlaubt es asynchronen Code so zu schreiben, das die eigentliche Programmlogik nicht mehr unter Tonnen von boilerplate Code verborgen ist.

Eines der wesentlichen Konzepte für die Benutzung von async und await ist die Task Struktur, die mit .Net 4 eingeführt wurde. Task ist eine Repräsentation des asynchronen Vorgangs. Task ist das Handle mit dem man auf den Vorgang zugreifen kann. Es ist nicht der Thread und es ist nicht das Resultat des Vorgangs. Task bietet Zugang zum Status des Vorgangs, zum Ergebnis und zu evtl. Fehlern.

Microsoft bietet eine CTP zum Download an, mit der man die neuen Keywords ausprobieren kann. (s.u.) Auf dieser Seite findet man auch die wichtigsten Links u.a. zu sehr informativen Videos auf Channel 9. Zusammen mit der CTP werden eine Reihe Dokumente installiert und jede Menge Beispiele. Das wichtigste ist das 101 Async Samples. Ein wahrer Schatz! Danke Microsoft, diese Samples erleichtern den Einstieg so sehr.

Links

Visual Studio Async CTP http://msdn.microsoft.com/en-us/vstudio/async.aspx

Async Readme (wird mit Async CTP installiert unter My Documents > Microsoft Visual Studio Async CTP)

Eric Lippert‘s Blog http://blogs.msdn.com/b/ericlippert/

Jon Skeet‘s Blog http://msmvps.com/blogs/jon_skeet/default.aspx

Slides zum Vortrag

Hier die Materialien zum Vortrag über die Parallel Extensions (Px) und Reactive Extensions (RX) vom Januar 2010 (Powerpoint + Demo Projekt für Visual Studio 2010 Beta 2).

Px und Rx.zip.doc (wegen WordPress muss die Datei nach .zip umbenannt werden)

Parallel und Asynchron

Vielen Dank an Stephen Toub für die freundliche Erlaubnis einige seiner Folien von der Paralleslism Tour zu benutzen. Ihr könnt diese sehr informativen Folien unter http://blogs.msdn.com/pfxteam/archive/2009/11/01/9916008.aspx finden.

Very special thanks to Stephen Toub for the kindly given permission to reuse some of his slides for the Parallelism Tour from http://blogs.msdn.com/pfxteam/archive/2009/11/01/9916008.aspx

Parallel Computing Developer Center on MSDN

http://msdn.microsoft.com/de-de/concurrency/default.aspx

Parallel Extensions

MSDN http://msdn.microsoft.com/de-de/library/dd460693%28VS.100%29.aspx

PFX Team http://blogs.msdn.com/pfxteam/archive/2010/01/05/9944172.aspx

Samples on Code Gallery http://code.msdn.microsoft.com/ParExtSamples

Artikelserie http://www.microsoft.com/downloads/details.aspx?FamilyID=c3ea8fb5-650d-434b-a216-7e54c53965d1&displaylang=en

Reactive Extensions

RX Team Blog http://code.msdn.microsoft.com/ParExtSamples

Devlabs (Download) http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx

Wes Dyers Blog http://blogs.msdn.com/wesdyer/default.aspx

Rx Wiki http://rxwiki.wikidot.com/

PDC Sample von Soma http://social.msdn.microsoft.com/Forums/en/rx/thread/0f8a414c-ddff-48fc-9a2c-c9b52f7eb372

 

Zu beiden Extensions existieren eine Reihe von Videos auf Channel 9