how to implement threads?

Hauke Hildebrandt Hauke.Hildebrandt at iup.uni-heidelberg.de
Tue Nov 21 09:34:57 GMT 2000


Oliver Sbanski wrote:

> On Friday 17 November 2000 17:32, you wrote:
> > On Freitag, 17. November 2000 15:48, you wrote:
> >
> > I haven't tried it, but maybe Qt threads are an option?
> > http://doc.trolltech.com/threads.html
> >
> > Ciao!
> > Sandy
>
> Thank for everyones replies to my question.
> I tried to find information about qt threads, but unfortunally, I could not
> connect to the trolltech server today (stalled forever...) and via kdevelop
> help I did not find anything about threads.
> I will lookup the link tomorrow!
>
> Thanks a lot again,
>
> Oli
>
> -
> to unsubscribe from this list send an email to kdevelop-request at kdevelop.org with the following body:
> unsubscribe »your-email-address«

Hallo, Oliver!

Ich habe gerade Deine threading-mail (samt Antworten) in der kdevelop mailing list gelesen. Ich habe
mich mittlerweile
auch ein bisschen mit Threads unter KDE herumgeschlagen und kann vielleicht hier und da helfen. Bin zwar
kein Experte,
aber Kleinvieh macht auch Mist, nicht wahr.

Also, wie Du bereits gehoert hast, gibt es mittlerweile eine QThread Klasse unter Qt. Sie stützt sich
auf die pthreads Bibliothek
(unter Linux/Unix), bietet aber nicht deren gesamte Funktionalität. QThread ist einfacher zu benutzen,
pthreads bietet mehr, your
choice...
Aber vorweg ein paar Warnungen:

1) Qt ist nicht thread-safe. Das heisst vor allem. dass Du GUI-Aufgaben (z.B. eine Grafik neu zeichnen
nach einer Änderung) nicht
aus einem Thread ausführen darfst. Das funktioniert vielleicht mal, aber wenn ein solcher Aufruf kommt,
während Qt gerade eben dies (neu zeichnen)
macht, kommt die Bibliothek ins stolpern und stuerzt (meistens) ab. Es gbt mittlerweile einen
Event-posting Mechanismus (QThread::postEvent()), mit dem
man das abfangen kann. Ich aber z.B. nicht, ob man ein signal aus einem thread schicken und im main
event loop in einem slot verarbeiten darf.

2) Threads sind toll, aber machen Dein Programm verdammt kompliziert. Wenn Du neu in dem Thema bist,
solltest Du ein Buch drüber lesen. Gut fand ich
"Programming with POSIX Threads" von David Butenhof (Addison-Wesley) und "Pthreads Programming" von
Bradford Nichols (O'Reilly). Threads zu erzeugen
ist einfach, aber Datenintegrität etc. machen die Sache schwierig.

3) Das Debuggen von Programmen mit threads ist die Hölle (na, das klingt zu theatralisch, sagen wir:
überraschend). Fehler treten nicht immer auf, weil ein Programm
selten mit dem gleichen Timing läuft. Und wenn man den Debugger dazuschaltet, verbraucht der auch
Ressourcen, so dass sich das Timing wieder aendert. Ausserdem
kann der Fehler halt in jedem der gleichzeitig ablaufenden threads sein, so dass man an vielen Stellen
suchen muss statt nur an einer.
Uebrigens ist der GNU debugger (gdb) nicht thread-aware; es gibt spezielle Versionen im Web, weiss im
Moment nicht wo, falls es Dich interessiert kann ich mal suchen.

ich hoffe, ich habe Dich nicht abgeschreckt.... ;-)

Hauke

--
Hauke Hildebrandt
Institut für Umweltphysik
Universität Heidelberg
INF 229
69120 Heidelberg

Tel.: 06221/546318
Fax: 06221/546405

email: hauke.hildebrandt at iup.uni-heidelberg.de




-
to unsubscribe from this list send an email to kdevelop-request at kdevelop.org with the following body:
unsubscribe »your-email-address«



More information about the KDevelop mailing list