| 

.NET C# Java Javascript Exception

4
Bislang habe ich mit Threads nur selten gearbeitet. Mir fällt aber auf, das Programme diese immer häufiger nutzen. Insbesondere im Bereich der Formatkonvertierung kommen diese zunehmend zum Einsatz. Auch wenn die Anzahl hier häufig auf 5 bis 10 parallele Threads beschränkt werden, sorgt dies in der Regel für Prozessauslastungen von 100%. Variable Einstellungsdialoge für die Anzahl der zulässigen Threads und auch die maximal zulässige Prozessorauslastung für einzelne oder auch alle Threads einer Anwendung findet man aber nicht. Kann man das überhaupt überwachen, einschränken und wenn ja, wie? Gibt es dafür vielleicht bereits für .NET entsprechende Lösungsansätze? Und was sind überhaupt die Vor-/Nachteile der Threads.
Ich habe mal geschaut, wie bei den Formatkonvertierungen gearbeitet wird. Es werden Konsolenfenster im Hintergund gestartet, über die externe Programme (wahrscheinlich FFMPEG) gestartet werden. Das letztprogenannnte Programm ist als Nicht-.NET-Anwendung aber gar nicht direkt kontrollierbar. Ich frage mich daher, ob es bei externen Programmen Sinn macht, mit Threads zu arbeiten? Bin für jede Meinung dankbar!
News:
19.09.2013
Volker Nemm 391 7
1 Antwort
1
Ich hatte vor einigen Tagen eine Frage reingestellt, die Dir möglicherweise auch weiter hilft:
http://codekicker.de/fragen/VB-.Net-Threads-vs-Threadpool

Kommt darauf an, welche Variante Du benutzt. Wenn Du Threads benutzt, kannst Du z. B. über .IsRunning nachschauen, ob das Ding aktiv ist. Bei der TPL musst Du andere Lösungen finden (meist Hilfsvariablen, die am Ende von jedem Task um 1 erhöht werden).
19.09.2013
muffi 1,4k 1 9
Kann man irgendwie die Prozessorauslastung eines einzelnen Thread ermitteln und wenn ja, wie? Und macht es Sinn, externe Anwendungen für die Kommandozeile per Thread zu starten?
Volker Nemm 20.09.2013
Wenn ich nicht irre, startet eine aufgerufene Kommandozeile sowieso als eigener Prozess. Und zwecks Auslastung, das habe ich mich auch schon gefragt. Mittels Parallel.For interessiert mich das aber auch nicht wirklich, da startet er von selbst so viele Threads, dass er ausgelastet ist.
muffi 20.09.2013
Klingt einleuchtend, aber heisst das dann nicht auch, das jeder Prozess der Kommandozeile über 2 Prozesse verwaltet wird, der von .NET angestossen wird und der der über die Kommandozeilenanwendung gestartet wird? Und dann wäre es doch blöd, externe Programme der Kommandozeile als Thread zu starten, oder?
DB 20.09.2013
hmmm... da würde ich DB jetzt erst einmal zustimmen, aber wie kann prüfen, ob das jetzt immens viele Resosurcen oder Rechenleistung verschwendet?
Volker Nemm 20.09.2013
Ich musste bislang erst einmal ein cmd-Programm starten. Und da habe ich es über Shell gemacht. Warum sollte ich mich um mehr kümmern als nötig? ;-)
muffi 20.09.2013

Stelle deine .net-Frage jetzt!