Meine Multithread-Anwendung nehmen einige Dateien von der HD und verarbeiten dann die Daten in diesen Dateien. Ich benutze die gleiche Instanz einer Klasse (dataProcessing), um Threads zu erstellen (ich ändere nur die Parameter der aufrufenden Methode).Multithread-Anwendung erreicht nicht 100% der Prozessorauslastung
processingThread [i] = neuer Thread (neuer ThreadStart (dataProcessing.parseAll));
Ich frage mich, ob die Ursache alle Threads aus dem gleichen Speicher gelesen werden könnten.
Es dauert etwa eine halbe Minute, um jede Datei zu verarbeiten. Die Dateien werden schnell gelesen, da sie nur 200 KB groß sind. Nachdem ich die Dateien verarbeitet habe, schreibe ich alle Ergebnisse in eine einzige Zieldatei. Ich denke nicht, dass das Problem Lesen oder Schreiben auf die Festplatte ist. Alle Threads arbeiten an der Aufgabe, aber aus irgendeinem Grund wird der Prozessor nicht vollständig verwendet. Ich versuche, mehr Threads hinzuzufügen, um zu sehen, ob ich 100% der Prozessorauslastung erreichen kann, aber es kommt zu einem Punkt, wo es die Verarbeitungsnutzung verlangsamt und verringert, anstatt sie vollständig zu nutzen. Jeder hat eine Idee, was könnte falsch sein?
Was ist mit diesem Prozess Sie glauben, dass die Engpässe CPU sind? – yamen
Nun, wenn ich die Anwendung debuggte, sehe ich, dass alle Threads "etwas tun". In der Tat, ich habe etwas Zeit mit mehr Threads, aber wenn ich zu viele hinzufügen, sinkt die Leistung. – Devela
Ich denke, dass mehr Informationen benötigt werden. Alle diese Aufgaben werden in die gleiche Datei zurückgeschrieben, was den Flaschenhals darstellen könnte. 30 Sekunden, um 200KB Daten zu verarbeiten, schlagen etwas anderes als CPU-gebundene Prozesse vor ... – yamen