Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » KDevelop / Qt / wxWidget » qthread

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.09.2004, 18:45 Uhr
~countless
Gast


hallo.
ich habe folgendes problem:
ich möchte von meiner selbstgeschriebenen klasse verschiedene threads laufen lassen. dafür habe ich meine klasse von qthread abgeleitet und halt per a->start() gestartet.
meine frage ist jetzt: kann ich diesen thread auch wieder schlafen schicken und von anderer stelle her aufwecken?
was ich in der doku so gesehen habe war wait() (hier wartet aber so wie ich das verstanden hab der aufrufende prozess darauf das der thread terminiert) und verschiedene versionen von sleep, die aber sowie ich es verstanden habe den thread nur für eine gewisse zeit schlafen schicken.
eine methode um einen wartenden thread wieder aufzuwecken hab ich nicht gefunden... in java wärs wohl wait() und notify(), aber wie siehts in c++ und qt aus?
kann mir da jemand weiterhelfen?
vielen dank im voraus
ronny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.09.2004, 02:01 Uhr
typecast
aka loddab
(Operator)


Ich fuerchte das Qt da keine Moeglichkeit bietet sowas zu machen.

Ich fuerchte du musst da ein wenig tricksen. Versuch mal deine run() Methode so umzuschreiben, dass sie sich periodisch schlafen legt wenn eine bestimmte Variable gesetzt ist und nach ablauf der Zeit schaut, ob die Variable noch gesetzt ist.

Setzen kannst du die Variable dann zum Beispiel ueber ein SIGNAL von dem Prozess aus, der den Thread stoppen/wieder anlaufen lassen soll.

Ich wuerde versuchen dem Thread einen SLOT mitzugeben ueber den man den Thread immer wieder fuer kurze Zeit schalfen legt:


C++:
void myThread::goSleep() {
    while (should_sleep){
             usleep(10);
     }
}



should_sleep dann einfach in einem anderen SLOT auf false setzen.

Ob das aber funktioniert kann ich leider nicht sagen. Ich musste selber noch nie die QThreads von Qt einsetzen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.09.2004, 09:31 Uhr
(un)wissender
Niveauwart


Es muss diese Funktionalität geben, 100%.
Habe noch nie mit qt was gemacht, haben jede Threadklasse, die ich kenne (sicherlich 10 oder so) hat das.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.10.2004, 13:36 Uhr
~countless
Gast


danke für die antworten.
ich habe es jetzt so gelöst, das in einem object auf sowohl der thread als auch der hauptprozess zugriff haben eine variable gesetzt wird (vom hauptprozess) und diese dann vom thread überprüft wird, und wenn sie entsprechend gesetzt ist, dann geht der thread per sleep in einer schleife immer so lange schlafen bis sich die variable geändert hat. klappt ganz gut... zumindest für meine anforderungen :-)
bye
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.10.2004, 22:46 Uhr
~anda_skoa
Gast


Du kannst den Thread in einer QWaitCondition warten lassen und ihn dort von einem anderen Thread jederzeit wecken lassen.

Ciao,
_
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ KDevelop / Qt / wxWidget ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: