TechEd 2009 - Dienstag

Von Andreas Pollak Autor Feed 12. November 2009 00:47

Hier wieder ein kleiner Auszug aus den vielen interessanten Sessions der TechEd 2009:

DEV307 - Parallel Computing for Managed Developers

SNC00301 Visual Studio 2010 / .NET 4.0, Task Parallel Library (TPL), Parallel Language Integrated Query (PLING) und Concurrent Data Structures (CDS) waren die Kernthemen in dieser Session. Steve Dexeira präsentierte hier z.b. die neuen Extensions für PLING z.B. asParallel, asSequential, asOrdered, withCancellation. Alle Extensions für parallele Execution sind auf IEnumerable<> anwendbar. D.h. hinzufügen von .asParallel in meinen Linq-Query und es kann losgehen.

SNC00302Dann ging es auch richtig affig zu! Wenn wir genügend Affen in einen Raum stecken die wild Eingaben über ein Keyboard machen und dann sollte theoretisch irgendwann der Text von Shakespare zu lesen sein. Der Aufruf von ParallelEnumerable.Range beschleunigt Einiges im Vergleich zu Enumerable.Range.

Mit .NET 4.0 können nun Taskkonzepte verwendet werden. Zitat: <<Think in terms of “units of work” rather than “paths of execution>>.

Diese lassen sich sehr viel einfacher als klassiche Threads verwenden. Zum Beispiel via Lambda-Expression:

Parallel.Invoke(()=>DoWork,()=>DoWork()); // Lambda Way

 

Alternativ mit der Taskklasse um z.b. auf die Beendigung des Task/der Tasks warten zu können:

Task t1 = Task.Factory.StartNew(()=>DoWork());
Task.WaitAll(t1);
 
Oder auch um Abhängigkeiten zu definieren:
Task t2 = Task.Factory.StartNew
(() =>
{ Task tc2 = Task.Factory.Startnew(() => {Do Work(); },
TaskCreationOptions.AttachedToParent);
Task.WaitAll(tc2);
}
);

Future-Result, Erst beim Zugriff auf das gewünschte Ergebnis wird auf die “Completion” gewartet:
Task<int> t3 = Task.Factory.StartNew<int>(()=>DoWork());
Console.WriteLine("Furture result= 0x:{0:x}",t3.Result);
// Beim Zugriff auf t3.Result wird gewartet, bis der Task t3 beendet ist und das Ergebnis feststeht

uvm. wie Continuation und Delayed Start. Die TPL kümmert sich dabei um das ganze “dynamic loadbalancing” (Stichwort: Workloadstealing).
 
SNC00311Parallel Tasks sind auch hervorragend in der IDE (Visual Studio 2010) bzgl. Debugging unterstützt. Statt der Threads können beispielsweise im Debugging einfach die Tasks angezeigt werden. Es ist möglich einzelne Tasks zu debuggen, andere Tasks einzufrieren um Seiteneffekte beim Debugging zu verhindern. Der visualisierte Executionpfad ist auch ein definitives Highlight (siehe Bild).
 

 

 

  

DEV303 - Source Code Management with Microsoft

Neue Features von Sourcecontrol in TFS 2010:

SNC00328 SNC00329 SNC00334

SVR302- Windows Crash Dump Analysis

Extrem interessanter Vortrag von Daniel Pearson (David Solomon Expert Seminars) wie ich “Blue-Screen”-Dumps mit Windbg analysieren kann, mein System mit einem externen Kerneldebugger debuggen kann. Damit lassen sich sogar Ursachen analysieren, wo die Maus und das ganze System hängt. Grenzgenial. Das wäre direkt mal einen Screencast wert :-).

Wichtig: Das Pagefile sollte immer auf der Bootvolume liegen (Performance beim Dump) und mind. so groß sein, dass der ganze Dump (MiniDump, Kernel oder Full) hineinpasst. Passt der Dump dort nicht hinein, wird dieser nicht geschrieben!!!!

apollak@Berlin

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

www.microsoft.com/austria | © 2009 Microsoft Corporation. Alle Rechte vorbehalten.
BlogEngine.NET 2.5.0.6 powered by atwork