2016-03-22 8 views
0

gehostet. Ich habe einen WCF-Dienst erstellt und in meinem localhost ausgeführt. Ich habe MicroSoft "Process Monitor" geöffnet, um den Hintergrundprozess zu beobachten. Überraschenderweise sah ich viele Threads mit Null UserTime und Kernal Time erstellen und töten.Leere Threads, die nach dem WCF-Dienst erstellen und löschen, werden auf dem Server

Ich weiß nicht, warum es leere Threads erstellt. Kann mir jemand sagen, warum so viele leere Fäden entstehen und zerstört werden?

Schnipsel von leeren Gewinde in Process Monitor zu schaffen:

enter image description here

+1

Könnte der 'ThreadPool' sein –

+1

Sie würden nicht zufällig alle 8 Sekunden anrufen? – MickyD

Antwort

0

Ein Bündel von Fäden werden geschaffen, um die Anforderungen zu verarbeiten. Dies wird Thread-Pooling genannt. Wenn die Anforderungen hoch sind, werden mehr Threads erstellt und dem Thread-Pool hinzugefügt, um die Anfragen effizient zu bearbeiten. Diese Threads werden nach dem Erstellen wiederverwendet.

Thread-Pooling reduziert die Zeit für die Initialisierung des Threads für jede Anforderung.

+0

Hallo Venu, Danke für dein Update. Aber ich habe eine Frage. Diese leeren Threads werden erstellt, wenn keine Anforderung an den Dienst gesendet wird. Das bedeutet, dass keine Anwendung/Benutzer den Dienst nicht verwendet, sondern die Threads erstellt und zerstört werden. Wird diese Thread-Erstellung die Leistung des Dienstes beeinträchtigen? Wenn ja, wie können wir es reduzieren? – Mathew

+0

@Mathew _ "Diese leeren Threads erstellen, wenn keine Anfrage an den Dienst gesendet wird. Das heißt, keine Anwendung/Benutzer verwendet den Dienst nicht, aber die Threads werden erstellt und zerstört." _ - Sie sollten das zu Ihrer Frage hinzufügen – MickyD

+0

Hi Mathew, basierend auf dem Screenshot, den du zeigst, werden nicht alle Threads für die Bearbeitung von Anfragen erstellt, normalerweise ja, aber nicht zu viele. Ich denke, es könnte etwas im Code fischig sein. –

Verwandte Themen