Mehrere Threads reag. gleichzeitig auf den gl. Slot [solved]

Alles rund um die Programmierung mit Qt
Antworten
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Mehrere Threads reag. gleichzeitig auf den gl. Slot [solved]

Beitrag von Chris81T »

Hallo Qt- Forum.

Ich mache gerade meine Anfänge mit Qt für ein SW_Projekt (Studienarbeit) und bin bisher sehr davon begeistert.

Bevor es richtig los geht, bin ich mir ein paar Testprogramme am schreiben, um Qt zu erlernen und vorab schon Fehler zu erkennen, die man später im Projekt nicht mehr hat/haben sollte.

So, jetzt zu meinem Beispiel und meiner Frage:
Ich habe mehrere Threads gleichzeitig in ner EventLoop am Laufen, die alle mit durch einen QTimer zum Testen den gleichen SLOT eines eigenen Objektes (also von eigener Klasse mit eigenem Slot ) ansprechen sollen.

Regelt Qt das von sich aus, dass alle Threads auch den SLOT durchlaufen, weil sie den Slot gleichzeitig emittieren, oder muss man da zur Sicherheit noch selber was handeln (Mutex, Critical Section, sowas in der Art)? Der Slot an sich hat keinen großen Bearbeitungsaufwand, also sollte nicht zu lange blockieren.

Wenn jemand sich fragt, was das soll:
Es gibt im Projekt einen Server, der für jede Verbindung zu einem Client einen Kommunikationsthread aufbaut. Wenn nun eine Abfrage vom Client kommt, soll via Signal ein Slot vom Server aufgerufen werden, der die Antwort gibt. Daher der Test, falls mehrere Clients zur gleichen Zeit die selbe Abfrage machen.

Vielen Dank für die Info's :)
Viele Grüße Chris81T


:) :)
Zuletzt geändert von Chris81T am 16. Mai 2008 01:14, insgesamt 1-mal geändert.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Slots sind in QT entkoppelt, das heisst, kommen die Signale nicht vom (QT)Mainthread, werden die Signale queueed, also in nen buffer gestellt, und durch den Mainthread verarbeitet.
Also im Slot bist in dem einem Mainthread .... , d.h. lokale objecte brauchst nicht sichern ....

Wenn du per parameter referenzen/zeiger auf Objecte gibts, von die aus von den threads und von dem slot (Mainthread) aus draufzugreifst, das musst natuerlich sichern.

Ciao ....
Antworten