2009-08-19 5 views
1

Ich versuche den Code für eine Anwendung, die wir gerade entwickeln, zu optimieren. Die aktuelle Implementierung aktiviert das Erstellen eines Threads, um einen Server kontinuierlich nach neuen Daten abzufragen. Wenn neue Daten gefunden werden, erstellt der Thread mehrere Threads (jedes Mal erstellt), um die Daten abzurufen.C# Echter Vorteil von Threadpooling

Ich las bezüglich thread pooling und war neugierig, ob das Ändern des Codes, um den threadpooling zu verwenden, bemerkenswerten Unterschied ergeben würde.

+0

Ich denke, mein ursprünglicher Beitrag könnte verwechselt worden sein. Der anfängliche lang andauernde Thread erzeugt bei jeder Abfrage des Servers und der Bereitstellung neuer Daten fortlaufend mehrere Threads. Meine Frage in Bezug auf die Optimierung ist, ob ich irgendwelche Vorteile feststellen würde, die diese fortlaufend mehrfach erzeugten Threads in einen Threadpool verwandeln oder ob die Verstärkung vernachlässigbar wäre. – Setheron

+0

Warum brauchen Sie überhaupt mehrere Threads zu erstellen? Warum nicht einfach aus dem lang andauernden Polling-Thread? –

+0

Es hängt davon ab, wie lange jeder Thread benötigt und wie oft er ausgeführt wird. –

Antwort

6

Wenn Sie einen einzigen lang laufenden Thread für die Abfrage erstellt haben, würden Sie keinen großen Unterschied bemerken. Zugegebenermaßen haben Sie im Moment wahrscheinlich einen Schlaf, also haben Sie einen Thread mehr, als Sie für eine lange Zeit benötigen (im Vergleich zu einer Timer-basierten Lösung), aber es ist grundsätzlich in Ordnung.

Thread-Pools eignen sich besonders gut für viele kurzlebige Operationen. Das Starten eines Threads ist nicht kostenlos, und der Overhead ist ziemlich groß, wenn die tatsächliche Arbeit trivial ist. Thread-Pools halten nur den eigentlichen Thread herum und warten auf ein Arbeitselement. Sie können diese Arbeitselemente dann mit sehr wenig Aufwand ausführen.

Mit einer einzigen lang laufenden Aufgabe ist der Overhead unbedeutend im Vergleich zu der Zeit, die in der Aufgabe selbst verbracht wird, so dass Sie keinen Unterschied bemerken würden.