| 

.NET C# Java Javascript Exception

4
Ich hab ein paar längere mathematische Berechnungen in meiner Anwendung. Wie kann ich die denn auf die vier Prozessoren in meiner Kiste verteilen? Da gibt es doch irgendwelche Parallelisierungsframeworks. Hab irgendwas mit Parallel.For gelesen.
News:
15.02.2011
Squidz 41 3
3 Antworten
3
Parallel.For ist teil der TPL s. http://msdn.microsoft.com/de-de/library/dd537609.aspx

Hier ein Beispiel aus der MSDN How to write a Parallel.For Loop


namespace ThreadLocalFor
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;


class Test
{
static void Main()
{
int[] nums = Enumerable.Range(0, 1000000).ToArray();
long total = 0;

// Use type parameter to make subtotal a long, not an int
Parallel.For<long>(0, nums.Length, () => 0, (j, loop, subtotal) =>
{
subtotal += nums[j];
return subtotal;
},
(x) => Interlocked.Add(ref total, x)
);

Console.WriteLine("The total is {0}", total);
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
}
}


und wie schon im anderen Beitrag geschrieben hier gibts eine Webcastserie zum Thema
http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-0905-01.mspx
15.02.2011
Gentlehag 1,0k 3 8
3
Mathematische Aufgaben, die auch noch parallel laufen sollen, schreien geradezu nach F# :)

let rec fib x = if x <= 2 then 1 else fib(x - 1) + fib(x - 2);;
Async.Parallel [ for i in 0..50 -> async { return fib(i) } ]
|> Async.RunSynchronously;;

Mit dem Dreizeiler lassen sich auch 8 Prozessoren eine Minute lang beschäftigen. Zugegeben, F# gehört nicht gerade zu den Sprachen, die man anfängt zu lesen und kurze Zeit später auch schreiben kann; aber investiert man etwas Zeit, hat man am Ende sicherlich Spaß daran/damit.
16.02.2011
Daniel Kuppitz 596 1 7
1
Hi,
vom MS Robotics Framework gibt es die CCR. Damit kann man seine Anwendung gut parallelisieren.
Vor einiger Zeit gabe es zur CCR mal einen 3 Teiler von Ralf Westphal im .NetPro Magazin.
Der Vorteil der CCR ist wohl, dass nie mehr Threads gleichzeitig laufen, wie CPUs vorhanden sind. (Ggf noch mal nachlesen)
Alternativ kannst Du auch das Reactive Framework verwenden.
Der Vorteil von den Reactive Extensions ist, dass man diese auch sehr gut im UI verwenden kann.
Wir haben mit der CCR und auch mit dem Reactive Framework gute Erfahrungen gemacht.



Grüße Ralf
15.02.2011
ralf.hientzsch 637 1 7

Stelle deine Thread-Frage jetzt!