Seite 1 von 1

100% CPU Auslastung bei Threading

Verfasst: 3. September 2008 15:18
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

Verfasst: 3. September 2008 15:53
von Christian81
Busy wait sollte man vermeiden. Eine QWaitCondition wäre eine Lösung. Siehe auch http://qtforum.de/forum/viewtopic.php?t=7234

Verfasst: 3. September 2008 16:12
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.

Verfasst: 3. September 2008 16:43
von Christian81
oder ein sleep im Millisekunden-Bereich. Nicht so elegant, geht aber trotzdem