Thema: C# Multithreating

Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Multithreating

  Alt 29. Apr 2012, 21:20
Hallo,

ich habe eine Frage zur Programmstrukturierung.
Folgendes Szenario:

Es gibt einen Thread der 30 mal in der Sekunde Daten liefert, diese Daten werden 100ms (3 Zyklen)später auf der GUI ausgegeben.
Jetzt sollen diese Daten aber noch zwischenverarbeitet werden. Für die Bearbeitung ist ein Zyklus zu kurz.
Falls die CPU der Flaschenhals ist, hast du dann ein Problem. Denn mit Threads erhöht sich ja nicht automatisch die Berechnungsgeschwindigkeit. Vielmehr werden dann zwei Sachen gemacht, von denen dann aber beide nur halb so schnell gehen. Falls du eine Dual- oder Quad-Core CPU vorraussetzen kannst, kannst du mit Threads schon doppelt bzw. viermal so schnell arbeiten. Dann bleibt aber das Problem auf Rechnern mit einem Kern. Und alte Quadcores schaffen auch nicht die Rechenleistung von neueren.

Ist eine Auswertung parallel zur Erfassung der Daten notwendig? Kann man vielleicht den Algorithmus noch optimieren?

P.S.: C# hat zwar eine Queue, aber es gibt auch einen Threadpool ( http://msdn.microsoft.com/de-de/libr...(v=vs.80).aspx ) der für solche Aufgaben wie geschaffen ist.
Beim Threadpool kannst du auch die maximale Anzahl an Threads festlegen wenn du möchtest, aber er wird keine Aufgabe überspringen. Falls die CPU also zu langsam ist, hinkt die Auswertung irgendwann ziemlich weit hinterher.
  Mit Zitat antworten Zitat