Entwickler-Ecke
Basistechnologien - Verständnisproblemchen Parallelisierung und Lamdba-Ausdrücke
OlafSt - Mo 17.06.13 14:00
Titel: Verständnisproblemchen Parallelisierung und Lamdba-Ausdrücke
Hallo Freunde,
ich beiße mich gerade durch den Guide "Parallel Programming with .NET" in der MSDN durch. So weit klingt das ja ganz simpel, bis auf eine Geschichte.
Gleich zu Beginn geht es um parallele Schleifen. Ein simples Beispiel wäre:
C#-Quelltext
1: 2: 3: 4:
| for (int i=0; i < n; i++) { BlockVar[i]++; } |
Um das zu parallelisieren, soll ich aus dem Schleifenkörper einen Lamda-Ausdruck machen. Etwa so:
C#-Quelltext
1: 2: 3: 4:
| Parallel.for(0,n,i => { } |
Sähe dann mein Code so aus:
C#-Quelltext
1: 2: 3: 4:
| Parallel.for(0, n, i => { BlockVar[i]++; } |
?
Ich gestehe, das ganze Zeug mit Lamdba-Ausdrücken habe ich nie verstanden, wohl aus Ermangelung eines wirklich brauchbaren Tutorials...
OlafSt - Mo 17.06.13 15:50
Nachdem ich das alles mal studiert habe:
Lambda-Ausdrücke sind also im wesentlichen nur eine Möglichkeit, anonyme Methoden in Kurzform darzustellen ?
Und anonyme Methoden wiederum sind im wesentlichen eine Möglichkeit, seine "Utils.cs" (also die Quelltextdatei mit all den kleinen, nirgendwohin passenden Hilfsroutinen) kurz zu halten - sprich, sich Tipparbeit zu sparen ?
Ich erkenne das gewaltige Potential, sein Programm sehr kompakt zu formulieren - und es gleichzeitig ungeheuer unlesbar zu gestalten :D
Demontieren wir unser Parallels.For-Beispiel - nur zum Verständnis :wink:
C#-Quelltext
1: 2: 3: 4:
| Parallel.For(0, n, i => { BlockVar[i]++; }); |
Den Lambda formulieren wir aus, in Form einer anonymen Methode:
C#-Quelltext
1:
| Parallel.For(0,n, delegate (int i) {BlockVar[i]++;}); |
Die anonyme Methode formulieren wir nun auch komplett aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| delegate void Operation(int i);
void AddOne(int Index) { BlockVar[Index]++; }
Operation op=this.AddOne; Parallel.For(0,n,op); |
Habe ich das so in etwa richtig begriffen ?
Th69 - Mo 17.06.13 16:39
Ja, exakt :zustimm:
OlafSt - Do 20.06.13 13:50
Sorry fürs späte antworten, aber 40 Fieber hauen mich nun mal immer um - besonders, wenn draußen als Bonus noch 32 Grad herrschen ;)
Summa summarum: Dann habe ich das Zeug jetzt verstanden. Gutes Tutorial !
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!