Signale und Slots vs Mutex

Alles rund um die Programmierung mit Qt
Antworten
Don-Calzone
Beiträge: 2
Registriert: 12. April 2007 19:00

Signale und Slots vs Mutex

Beitrag von Don-Calzone »

Hallo,

ich entwickle grade eine Server-Client Applikation mit Qt die sehr Threadgestützt ist. Nun habe ich mir die Frage gestellt wie ich das ganze threadsicher mache.
Dabei bin ich der Meinung ich das ich signale und slots benutzen kann oder mutexe. Die große Frage ist wie performant is das ganze unter schwerer Last

Hier sind mal meine pro und contra gedanken:


Signals and slots:
Pro:
Einfache Nutzung
Contra:
Ca 10 Funktionsaufrufe sind nötig
Es wird ein Signal benötigt für die anfrage und eins für die antwort
Ich weis nich wie die Performanz ist wenn man 100-300 signale pro Sekunde hat in eine signalqueue

QMutex:
Pro:
Nich soviele Funktionsaufrufe, schätze ich
Kein antwortsignal nötig wegen rückgabeparameter
Contra:
Bin mir nich sicher aber cih glaube das ein artender thread durch ein signal informiert wird ob er weiter machen kann

Hoffe mal einer kann da helfen
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Beitrag von dvdjimmy »

HI,

ich kann dir bezüglich der Geschwindigkeit von Signal/Slots ein wenig die Angst nehmen:

"On an i586-500, you can emit around 2,000,000 signals per second connected to one receiver, or around 1,200,000 per second connected to two receivers."

So stehts in der qt-doku.

Sollte also mit deinen 300-400/s nicht wirklich ein Problem geben :)

Gruß,

dvdjimmy
yakin
Beiträge: 6
Registriert: 19. Juni 2005 13:02

Beitrag von yakin »

Mir ist nicht so ganz klar, wie dir Signale/Slots dabei helfen sollen, theadsave zu werden?
Sig/Slots arbeiten im Gegensatz zu Mutexen nicht Atomar, somit können sie dir nicht wirklich helfen, thread-save zu werden.
Was möchtest Du denn genau mit den Sig/Slot Mechanismus machen?
Gruß Yakin
Don-Calzone
Beiträge: 2
Registriert: 12. April 2007 19:00

Beitrag von Don-Calzone »

Also ich verweise mal hierhin
http://doc.trolltech.com/4.3-snapshot/t ... ss-threads

bei signalen und slos zwischen threads wird der slot nich vom signal sendenden thread aufgerufen sondern vom empfänger thread. Dies passiert nur wenn das eine queued connection ist, also eine mit ner warteschlange. somit gibts keinen zugriff auf auf die daten des empfänger thread vom sender thread aus. Das ist also threadsicher.
Antworten