Hi,
ich lasse bei Programmstart zwei Threads starten.
Diese rufen jeweils ihre Funktionen auf.
In den Funktionen findet u.a. ein Funktionsaufruf statt.
In diesen Funktion überprüfen meine Threads ihre (bool) flags ob sie arbeiten können oder weiter in der Endlosschleife weiterlaufen.
Wenn die flags es erlauben beginnt die eigentliche Arbeit.
So habe ich mir das vorgestellt und auch realisiert, jedoch führt das ganze immer zu einer 100% CPU Auslastung.
Was könnte ich besser machen?
Edit: Die Schleifen nehmen mir die ganze Rechenzeit weg.
Habe mich an das Beispiel von MS gehalten ( MTTTTY)
Dort wird ebenfalls in einer thread-schleife falls es die flags erlauben ein ReadFile und andere Sachen gemacht.
MS Funktion: ReaderAndStatusProc
http://read.pudn.com/downloads8/sourcec ... AT.C__.htm
100% CPU Auslastung bei Threading
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Busy wait sollte man vermeiden. Eine QWaitCondition wäre eine Lösung. Siehe auch http://qtforum.de/forum/viewtopic.php?t=7234
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
danke,
den einen von meine threads könnte ich aufwecken wenn z.B. der User etwas klickt oder ein List Objekt Werte enthält, so wird diese wait condidtion unterbrochen.
Bei dem anderen Thread handelt es sich um einen empfänger, der auf Daten vom Com-Port wartet.
Hier könnte ich eventuell die WaitForSingleObject funktion von Windows ausnutzen um die wait condition bei diesm thread zu lösen.
den einen von meine threads könnte ich aufwecken wenn z.B. der User etwas klickt oder ein List Objekt Werte enthält, so wird diese wait condidtion unterbrochen.
Bei dem anderen Thread handelt es sich um einen empfänger, der auf Daten vom Com-Port wartet.
Hier könnte ich eventuell die WaitForSingleObject funktion von Windows ausnutzen um die wait condition bei diesm thread zu lösen.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: