.NET 4 enthält einen neuen Namensraum, System.Threading.Tasks, der Klassen enthält, die die Threading-Funktionalität abstrahieren. Nutze ThreadPool im Hintergrund. Eine Aufgabe stellt die Arbeit einer Einheit dar, die erledigt werden sollte. Die Arbeit dieser Einheit kann in einem separaten Thread ausgeführt werden oder eine Aufgabe kann synchron gestartet werden, was das Warten auf den Haupt-Tuning-Thread erfordert. Die Nutzung von Aufgaben gibt dir nicht nur eine Abstraktionsschicht, sondern auch viel Kontrolle über die zugrundeliegenden Threads. Aufgaben bieten viel Flexibilität, wenn es darum geht, die zu erledigen Arbeit zu planen. Zum Beispiel können Sie eine kontinuierliche Aufgabe definieren – welche Arbeit nach Abschluss einer Aufgabe erledigt werden sollte. Das kann den Unterschied zwischen einem erfolgreichen und nicht-erfolgreichen Projekt ausmachen. Außerdem können Aufgaben in einer Hierarchie angeordnet werden. Zum Beispiel kann eine Elternaufgabe eine neue Kindaufgabe erstellen. Dies erzeugt eine Abhängigkeit, sodass, wenn du die Eltern-Aufgabe abbrichst, auch deren Kind-Aufgabe abgebrochen wird.
Heutzutage ist es üblich, Aufgabenausführungsmethoden zu verwenden, und sie sind leistungsstark, und ich weiß nicht, wo die Aufgabenleistung liegt.
Ich habe Task und Thread selbst getestet und habe das Gefühl, dass Task sehr langsam ist, was die Performance stark beeinträchtigt, und der Testcode ist wie folgt:
Wir schleifen die Methode 1000 Mal durch, dann blockiert die Methode für 100 Millisekunden, und das Testergebnis ist wie folgt:
Ergebnis:
Die Ausführung des Threads dauert 188 Millisekunden
Die Ausführung der Aufgabe dauert 14.671 Millisekunden
Der Geschwindigkeitsunterschied zwischen beiden beträgt das 78-fache!!
Die Aufgabe ist sehr langsam, ich weiß nicht, warum das passiert, stimmt etwas mit meinem Testcode nicht oder was? Ich hoffe, Sie können erklären, warum das passiert...
|