Qt: Block bis ein SIGNAL eintrifft
-
Hallo,
ich möchte in einem Thread warten bis ein SIGNAL (MyClass::theSignal()) eines anderen Threads eintrifft, dieses Signal würde entweder das oben genannte sein oder eben ein SIGNAL(QTimer::timeout()).
Danach habe ich gegoogled und eine lokale "QEventLoop" gefunden bei der sich alles verbunden und mit .exec() blockiert bis der quit()-slot angeflogen wird. Schien auch alles ganz sinnvoll zu sein... jetzt habe ich etwas weiter geoogled und gelesen, daß diese Methode (nested event loops) undefiniertes Verhalten hervorrufen kann... ganz verstanden habe ich es noch nicht, aber... da habe ich mich gefragt ... wie die Alternativen dazu aussehen?
Was muß ich bei diesem Problem machen, damit es mit definiertem Verhalten abläuft?
Danke
-
Bzw bei mir kann ich soetwas gar nicht konstruieren, dann stürzt die Applikation sofort ab.
QEventLoop: there must be only one event loop object.
Construct it before QApplication.
-
Du kannst im Grunde genau dieses Verhalten recht simpel nachbauen. Eine Klasse, die einen gelockten Mutex locken lässt (block) und einen slot enthält der den Mutex unlockt (signal weckt anderen Thread auf).