Ich verstehe, dass die neue TPL (Task Parallel Library) die Parallel.ForEach() implementiert hat, so dass es mit "ausdrückliche Parallelität" funktioniert. Das heißt, es wird nicht garantiert, dass Ihre Delegierten in mehreren Threads ausgeführt werden, sondern es wird geprüft, ob die Hostplattform mehrere Kerne hat. Wenn dies der Fall ist, verteilt es die Arbeit auf die Kerne (im Wesentlichen 1 Thread pro Kern). ..NET 4 ... Parallel.ForEach() Frage
Wenn das Host-System nicht mehrere Kerne hat (es wird immer schwieriger, einen solchen Computer zu finden), wird der Code sequenziell wie eine "normale" foreach-Schleife ausgeführt. Ziemlich cooles Zeug, ehrlich gesagt.
Normalerweise würde ich etwas tun, wie folgt aus meinem langen laufenden Betrieb auf einem Hintergrund-Thread aus dem Threadpool zu platzieren:
ThreadPool.QueueUserWorkItem (neu WaitCallback (Targetmethod), neu Object2PassIn());
In einer Situation, in der der Host-Computer nur einen einzigen Kern hat, platziert die Parallel.ForEach() der TPL den Aufruf automatisch auf einen Hintergrund-Thread? Oder sollte ich manuell irgendwelche TPL-Aufrufe von einem Hintergrund-Thead aufrufen, so dass, wenn ich von einem einzelnen Kern-Computer zumindest diese Logik aus dem Dispatch-Thread der GUI ausführe?
Meine Sorge ist, wenn ich die TPL verantwortlich für all dies verlassen möchte ich sicherstellen, wenn es bestimmt, es ist eine einzige Kern-Box, die es immer noch den Code, der innerhalb der Parallel.ForEach() -Schleife auf einen Hintergrund-Thread ist wie ich es getan hätte, um meine GUI nicht zu blockieren.
Dank für irgendwelche Gedanken oder Ratschläge, die Sie haben ...
Nur eine kurze Nachfassaktion: TPL Rocks! Ich komme nicht darüber hinweg, wie viel schneller ich in der Lage bin, verschiedene Anwendungen mit nur ein paar kleinen Anpassungen mit TPL-Anrufen im Vergleich zum "Standard" -Tarif zu machen. Ich beobachte Bearbeitungszeiten bei verschiedenen Artikeln, die um mehr als 80% reduziert wurden. MS hat es wirklich aus dem Park geschafft - tolle Arbeit Jungs. – BonanzaDriver