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.