100% CPU Auslastung bei Threading

Alles rund um die Programmierung mit Qt
Antworten
diddely
Beiträge: 49
Registriert: 9. Juli 2008 16:19

100% CPU Auslastung bei Threading

Beitrag von diddely »

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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

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
diddely
Beiträge: 49
Registriert: 9. Juli 2008 16:19

Beitrag von diddely »

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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

oder ein sleep im Millisekunden-Bereich. Nicht so elegant, geht aber trotzdem
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten